1.注意事项
导入导出先别删库,导完后看看是否报错,mysql 的迁移很容易报错
新旧数据库设置相同的“字符集”
2.导出旧数据库
首先,你应该先使用 cmd 登录 mysql ,查看要导出的数据库的编码格式
( address 是远程 ip 地址,此时才需要 -h ,本机不要加 -h,不要 localhost)
( -P 是端口,-u 是账号,-p 是密码,注意空格规范如下)
(需要配置 Path ,否则你需要先进入mysql的bin目录下才可执行该命令)
mysql -h address -P 3306 -u root -p123456
按照前面的方法,查看数据库 “原本的编码格式” ,等会最好以这个编码导出
接着,使用 mysqldump 导出数据库(也需要配置 path,这里不赘述)
(其中的 -h 与 address 是远程地址,-P是端口,-u 与 -p 是密钥)
( –default-character-set 是导出的编码格式,mytest数据库名,后存放位置)
mysqldump -haddress -P3306 -uroot -p123456 --default-character-set=utf8mb4 mytest > D:\MyDesk\mytest.sql
(命令行导出,看似没问题,但导入时报错多,推荐使用工具导出,如 navicat)
(navicat 连接后,选中对应的数据库,点击右键导出结构和数据,也很方便)
(navicat 导出后的数据,导入时报错少,原因自己猜。。。。。。。。。)
3.数据导入看是否本地数据库,因为云数据库需要先进行远程连接
使用 cmd 登录 mysql ,操作和前面一样
mysql -h address -P 3306 -u root -p123456
这次我们使用 source 命令导入数据(可以实时观察导入结果)
首先设置数据库编码(确保和导入sql编码一致,假设为 utf8mb4)
(您必须先设置编码,再创建数据库,否则编码不生效)
(或者在创建后,使用 alter 命令强制修改)
set names utf8mb4;
set character_set_database = utf8mb4;
set character_set_server = utf8mb4;
创建一个新的数据库
create database mytest;
使用该数据库
use mytest;
使用 source 命令导入(该命令在一些软件中不可用,请在 cmd 或终端使用)
source D:\MyDesk\mytest.sql;
( 即使小心翼翼,导入可能还是会有错误,建议使用 “导入工具” 导入数据库)
4.为什么导入还是有错误?
一般来说,数据库中有很多表,可能没个表都用了不同的字符集,整个数据库设置统一编码导出其实是有问题的,你需要仔细、谨慎的进行数据迁移操作。
导入的数据,与你导出的数据有很大的关系,导出不正确,就很容易导不进去。
导出时,推荐使用 navicat 工具;导入时,使用宝塔面板导入,几乎不报错。
5.还有什么更好的办法?
安装数据库时,首要就是设置编码
尽量不迁移,可以使用云数据库统一管理(内网速度不错,外网就算了)