DBAtlas · 数据库运维图谱

1267: Illegal mix of collations(非法的排序规则混用)

MySQL

含义

在比较或组合操作(JOIN、WHERE、UNION、CONCAT)中,组合了两个排序规则不同的字符串,MySQL 无法确定应采用哪种排序规则。

原因

通常是比较字符集/排序规则不同的列(例如 utf8mb4_general_ci 与 utf8mb4_unicode_ci,或 latin1 与 utf8mb4),或列与连接排序规则不匹配。在用不同默认值创建表/数据库时很常见。

解决方法

使比较两边采用相同的排序规则:用 COLLATE 指定显式排序规则(例如 col1 = col2 COLLATE utf8mb4_unicode_ci)或使用 CONVERT(... USING ...)。作为永久方案,将受影响的列/表转换为统一的字符集和排序规则。同时统一连接排序规则(collation_connection)。

在 DBAtlas 中打开 →

同一数据库的其他条目