我需要你帮助确定为什么会出现这个错误
Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='
程序工作正常,直到昨天,今天开始给出错误 非法混合整理。我检查了我的数据库的每个表,并且所有表及其列都在一个字符集和排序规则中: - utf8 utf8_unicode_ci。
我创建了另一个具有相同structrue的模式,并尝试执行相同的查询,但它的工作正常,但不是原始模式。
任何人都可以提供任何意见吗?为什么会这样?
答案 0 :(得分:8)
我遇到了同样的问题,我发现表有相同的排序规则,但是列没有。 您可以下载mysqlyog试用版并在alter table中取消选中隐藏语言选项.... 最快捷的方式。
答案 1 :(得分:4)
在我的情况下,这是由于愚蠢的mysql工作台 - 它以某种方式从模式(到某些元数据或什么)添加到过程默认排序规则,然后如果您将过程中的任何内容整理到不同的排序规则,则会发生此异常;
必须设置正确(在过程中使用的那个)排序到架构,然后重新编辑过程并应用更改(必须重新保存或重新创建),现在一切正常
答案 2 :(得分:2)
需要转换concat函数的每个参数。
CONCAT(CONVERT(field_A USING utf32), CONVERT(field_B USING utf32))
或者哪些功能可以解决您的问题。
答案 3 :(得分:0)
我的问题是一样的,但在我的情况下,在使用sql语句之前足够使用转换 - 在php
iconv(...)