Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation...

MySQL进行字符串比较时发生错误

今天在做一些多表查询时,MySQL报错:[Err] 1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

问题分析:表之间的编码不一致,或者是比较的字段之间的编码不一致。

解决方法:

  1. 查看表之间的编码是否一致;
    show create table <表名>;
  2. 如果表不一致,修改其中一个表的编码格式,使其表间编码一致
    alter table <表名> character set utf8 COLLATE utf8_general_ci;
  3. 表间编码一致仍出现同样错误,查询(相关查询语句的,=号两边)字段之间是否一致
    show full columns from <表名>;
    SELECT CHARSET(<字段名>) FROM <表名>;
  4. 修改字段编码
    ALTER TABLE <表名> MODIFY <字段名> <字段类型> CHARACTER SET utf8 COLLATE utf8_general_ci;

你可能感兴趣的:(Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation...)