MySQL進(jìn)行字符串比較時(shí)發(fā)生錯(cuò)誤
今天在做一些多表查詢(xún)時(shí)娶眷,MySQL報(bào)錯(cuò):[Err] 1267 - Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
問(wèn)題分析:表之間的編碼不一致建芙,或者是比較的字段之間的編碼不一致形耗。
解決方法:
- 查看表之間的編碼是否一致;
show create table <表名>;
- 如果表不一致碍沐,修改其中一個(gè)表的編碼格式狸捅,使其表間編碼一致
alter table <表名> character set utf8 COLLATE utf8_general_ci;
- 表間編碼一致仍出現(xiàn)同樣錯(cuò)誤,查詢(xún)(相關(guān)查詢(xún)語(yǔ)句的累提,=號(hào)兩邊)字段之間是否一致
show full columns from <表名>;
SELECT CHARSET(<字段名>) FROM <表名>;
- 修改字段編碼
ALTER TABLE <表名> MODIFY <字段名> <字段類(lèi)型> CHARACTER SET utf8 COLLATE utf8_general_ci;