MySQL 查询遇到Illegal mix of collations的错误
warning:
这篇文章距离上次修改已过451天,其中的内容可能已经有所变动。
错误解释:
"Illegal mix of collations" 错误发生在MySQL数据库中,当你在执行一个涉及到字符串比较的查询时,涉及到不同字符集的排序规则(collation)混合使用,而这些排序规则不兼容时就会出现这个错误。
解决方法:
- 确定查询中涉及的所有列的字符集和排序规则是否一致。
- 如果需要比较的数据使用了不同的字符集或排序规则,可以使用
CONVERT()函数将它们转换成相同的字符集和排序规则。 - 修改查询,使用
COLLATE关键字显式指定排序规则,使所有涉及比较的字符串使用相同的排序规则。
示例:
假设有两列column1使用latin1字符集和collation1排序规则,column2使用latin1字符集和collation2排序规则。
SELECT *
FROM table_name
WHERE column1 = column2;修改后的查询(假设需要将column2转换为collation1):
SELECT *
FROM table_name
WHERE column1 = CONVERT(column2 USING collation1);或者
SELECT *
FROM table_name
WHERE column1 COLLATE collation1 = column2;确保转换或者指定的排序规则是兼容的,这样就可以解决"Illegal mix of collations"错误。
评论已关闭