報錯:illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='


sql語句:

select t1.block_info, t2.zone 
from device_indoor_tbl t1 
left join blackwhitezone_tbl t2 on t1.block_info=t2.zone 

字符集編碼不同:

報錯信息:illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='

原因:字符集編碼不同。

ps:按理說同一個數據庫的字符集編碼應該是一樣的,奈何之前不知道什么原因數據庫竟然有不同的編碼,接手的時候數據庫又不敢亂改,只能從sql語句着手想辦法,百度了好久,最后還是問另外一個同事才解決的。

解決方法:將兩個字段的字符集編碼改成相同的。(建議修改成多數表所用的字符集編碼,我的數據庫多數表是utf8_general_ci編碼,只有少數幾張例外是utf8_unicode_ci)

修改后的sql語句:

select t1.block_info, t2.zone 
from device_indoor_tbl t1 
left join blackwhitezone_tbl t2 on t1.block_info=t2.zone COLLATE utf8_general_ci

 


免責聲明!

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



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