Mysql编码引起的 Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)错误

1.【错误经过:】
  • 在 mysql数据库执行多表连接查询时:

select * from A LEFT JOIN B ON A.user_id = b.user_id

  • 出现错误:

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT)

​意思大概就是说 A表的编码格式和 B表的编码方式不一致,不能进行比较。

2.【解决办法:】
  • 将 A表 和 B表 的 ( collations 或者 校对规则)的编码的方式统一为 utf8_general_ci

  • 然后执行如下语句:

    
    alter table 表名convert to character set utf8 collate utf8_general_ci
    
    

*注意 !!!*

*一般做了上面这一步还是不能解决问题,这是因为表里面的数据是之前插入进去的,编码方式自然也是之前的 `utf8_unicode_ci` 了,所以做数据比较的时候依然报错!!!要解决问题:还需要继续执行第二步,把表数据的编码规则也统一纠正过来*

*(另,注:utf8_general_ci和utf8_unicode_ci的区别,前者校对速度快,但准确度稍差;后者准确度高,但校对速度稍慢。)*
posted @ 2019-08-24 12:55  猿书  阅读(16702)  评论(0编辑  收藏  举报