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 表示如果数据库不存在则创建数据库