关于Windows使用mysqldump备份MySQL数据库(和数据表)出现乱码的解决方案

关于Windows使用mysqldump备份MySQL数据库(和数据表)出现乱码的解决方案




问题描述

  • 在使用mysqldump命令备份数据表时,若里面存在中文,则中文部分会变成乱码,无法导入到其他MySQL数据库中。
  • 如下是使用命令mysqldump -u root -p myDatabase> backup.sql(如果备份的是数据表则需要在数据库后面指定表)备份整个myDatabase数据库后打开backup.sql出现的乱码:

图片乱码

问题原因

  • 在Windows中使用Power Shell终端进行重定向导入时,定向操作可能会默认使用UTF-16编码格式来保存输出的文件,UTF-16与MySQL通常使用的UTF-8编码或其他编码格式不兼容,导致当你尝试将这样的文件加载到MySQL数据库中时出现乱码。
  • 如下是导入到Linux MySQL时出现的问题:
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: '��-'.


解决办法

  • 在导出的时候加入--result-file参数,mysqldump会以正确的格式来写入文件,如下:
 mysqldump -u root -p myDatabase --result-file=backup.sql # 备份数据库
  mysqldump -u root -p myDatabase myTable --result-file=backup.sql # 备份数据表
  • 之后使用mysql -u root -p myDatabase < backup.sql来导入到新的数据库中,就不会出现上面的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值