原创

Windows系统导入sql文件失败问题处理(Mysql命令行)

最近测试需要把线上的数据导入到本地mysql数据库中使用,但是操作完成后发现有部分数据没有完整导入,于是分析了一下原因,最终发现是因为本地数据库的客户端字符集与线上导出的sql文件的字符编码不一致造成的,记录一下处理过程。

1.线上数据导出为sql文件

线上数据库为Linux系统,数据导出使用mysqldump工具,命令如下:

mysqldump --login-path=mydb --databases aa >aa.sql

(mysql免密登录参考:用 mysql_config_editor 生成登录密钥

导出文件属性如下:

2.导入sql文件到本地数据库

本地数据库导入使用的方法为直接在mysql命令行中执行source D://aa.sql;命令加载sql文件;

3.遇到问题

查看导入sql文件的日志,发现报错如下:

可以看到mysql错误码为1064,而且中文显示为乱码,怀疑是数据库字符集的问题,所以需要查一下数据库的字符集配置,查询命令如下:

SHOW VARIABLES LIKE 'character_set%';

直接在mysql命令行中输入,查询结果如下:

通过查询看到虽然character_set_database字符集是utf8的,但是character_set_client和character_set_connection都是gbk,那么问题原因应该就在这里了。

4.修改字符集编码

明确了问题原因,接下来就需要将字符集编码都修改成utf8格式,修改方式为直接在mysql配置文件中增加下面配置:

[client]
default-character-set=utf8mb4

修改完成需要重启数据库使配置生效,同时需要重新进入mysql命令行,然后查看当前编码配置:

通过结果可以看到字符集都已经变成utf8格式了。

5.处理完成

设置完字符集后,重新导入sql文件,就可以正确导入了。


扩展说明:

1.也可以在登录mysql命令行的时候增加 --default-character-set=utf8mb4参数来确保编码一致。

正文到此结束
本文目录