MySQL 在进行多表关联查询或字段比较时,若参与运算的字段或表使用了不同的排序规则(Collation),会触发 Illegal mix of collations 错误。本文以一个真实案例为例,分析错误原因:表 A 使用 utf8mb4_general_ci,表 B 使用 utf8mb4_0900_ai_ci,两者不兼容导致查询失败。解决方案为使用 ALTER TABLE ... CONVERT TO CHARACTER SET ... COLLATE ... 将表 A 的排序规则统一为 utf8mb4_0900_ai_ci。
本文适用于遇到 MySQL 排序规则冲突错误的开发及运维人员。
textIllegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation '='
text表A的排序规则为:utf8mb4_general_ci 表B的排序规则为:utf8mb4_0900_ai_ci
shell# 将表A的排序规则变更为 utf8mb4_0900_ai_ci
ALTER TABLE A CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;


本文作者:Odboy
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC 4.0 BY-SA 许可协议。转载请注明出处!