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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM