今天,部署测试环境,迁移数据库数据时,发生了以下问题:
公司的数据库mysql8.0版本,而我测试环境的数据库则是5.7版本
从公司导出的数据库sql文件,导入测试环境数据库时发生了报错
以下是本人一系列的解决方法
第一步:
使用Navicat工具
此时,我们将上面导出的文件,导入我们测试环境的数据库,如下:
运行后发现报错了,我们看一下报错信息
原因是数据库排序规则的问题,MySQL 5.7使用的默认为utf8mb4_unicode_ci
,但是从MySQL8.0开始使用的已经改成utf8mb4_0900_ai_ci
解决方法:
打开sql文件,把所有的utf8mb4_0900_ai_ci替换成utf8mb4_unicode_ci
最后我们重新导入试试:
导入成功,问题解决!!!
补充一点:期间还遇到一个问题
报错内容:
1153 - Got a packet bigger than 'max_allowed_packet' bytes
原因:MySQL默认读取执行的SQL文件最大为16M,我这个文件是50多M的,所以出现了报错
解决方法:
找到服务器mysql安装目录下的my.cnf文件,一般会在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找
find / -name my.cnf
编辑文件,在文件内[mysqld]下面加上max_allowed_packet=400M
保存文件,并重启mysql
service mysql restart
重启后即可解决