解决 MySQL 中的“非法混合排序规则”错误
当尝试执行涉及 SELECT 语句的 MySQL 存储过程时,您可以遇到错误“非法混合排序规则”。出现此问题的原因是表和要比较或排序的列的排序规则存在差异。
表的排序规则为 latin1_general_ci,而 WHERE 子句中的列使用 latin1_general_cs。这些不兼容的排序规则会导致错误。
解决方案 1:使用 COLLATE 子句指定共享排序规则
使用 COLLATE 子句为列中的列指定通用排序规则查询:
WHERE column1 COLLATE latin1_general_ci = column2 COLLATE latin1_general_ci
解决方案 2:使用BINARY 运算符
或者,您可以使用 BINARY 运算符,它将字符串视为二进制数据:
WHERE BINARY column1 = BINARY column2
注意:
使用 BINARY 运算符时,请记住,它会禁用该列上的任何潜在索引问题。
有关整理相关主题的全面信息,请参阅 Eggyal 在类似讨论中提供的极具洞察力的回复。
以上是如何修复 MySQL 中的'非法混合排序规则”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!