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的區別,前者校對速度快,但准確度稍差;后者准確度高,但校對速度稍慢。)*