找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

193

积分

0

好友

19

主题
发表于 昨天 00:51 | 查看: 4| 回复: 0

在最近测试中,需要将线上数据导入到本地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文件,数据完整导入且无报错:

图片

扩展说明

  1. 也可在登录MySQL命令行时添加--default-character-set=utf8mb4参数确保编码一致性。
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区(YunPan.Plus) ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-1 14:12 , Processed in 0.095260 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 CloudStack.

快速回复 返回顶部 返回列表