在最近测试中,需要将线上数据导入到本地MySQL数据库使用,但操作后发现部分数据未完整导入。分析原因后,发现是由于本地数据库客户端字符集与线上导出的SQL文件字符编码不一致所致。以下是处理过程的详细记录。
1. 线上数据导出为SQL文件
线上数据库运行在Linux系统,使用mysqldump工具进行数据导出,具体命令如下:
mysqldump --login-path=mydb --databases aa >aa.sql
(MySQL免密登录可参考相关文档)
导出文件属性如下图所示:

2. 导入SQL文件到本地数据库
本地数据库导入采用MySQL命令行方式,直接执行source D://aa.sql;命令加载SQL文件。
3. 遇到问题
查看导入日志时发现报错信息:

错误代码显示为1064,且中文字符出现乱码,初步判断为字符集配置问题。通过以下命令查询数据库字符集设置:
SHOW VARIABLES LIKE 'character_set%';
查询结果如下:

结果显示character_set_database为utf8,但character_set_client和character_set_connection均为gbk,确认这是导致问题的根本原因。
4. 修改字符集编码
明确问题后,需将字符集统一修改为utf8格式。在MySQL配置文件中添加以下配置:
[client]
default-character-set=utf8mb4
修改完成后重启数据库服务,重新进入MySQL命令行验证字符集配置:

确认所有字符集均已转换为utf8格式。
5. 处理完成
字符集配置调整后,重新导入SQL文件,数据完整导入且无报错:

扩展说明
- 也可在登录MySQL命令行时添加
--default-character-set=utf8mb4参数确保编码一致性。
|