MYSQL 字符编码不对导致查询语句含有中文就出错的解决办法

Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='

想必用MYSQL出现上述错误时经常的事,网上有很多解决方案,一般都是字符集配置的问题。但如果配置都正确,但只要查询SQL语句中含有中文字符还是会报上述错误。那就很郁闷了。经过一段时间的尝试,最终认定是由于备份、恢复数据库导致的。以前用MySQL GUI Tools 5.0来做备份,然后在MYSQL命令行下作恢复,数据量小还好,如果数据量大就不行了。后来就直接用MySQL GUI Tools 5.0来做恢复,恢复当然快,但是由于备份时用的UTF8,而数据库和表结构都是用的GBK,所以恢复上去就会出现上述错误。原因找到了,看来还是用MYSQL的命令行MySqlDump来备份,用MySql来恢复才是最保险的。

 

backup.bat
-------------------------------------------------------------------
cd d:/mysql/bin
d:
mysqldump -R -uroot -p123456 --database dbname > e:/backup.sql
pause

 

restore.bat
-------------------------------------------------------------------
cd d:/mysql/bin
d:
mysql -uroot -p123456 dbname < E:/backup.sql
pause

 

用了上面两个批处理,再也没出现字符编码不匹配的错误了。

注:备份命令的 -R 表示将存储过程也进行备份 --database 表示如果数据库不存在则创建数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值