问题 MySQL操作'='的非法混合排序(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)


我需要你的帮助来确定为什么会出现这个错误

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

程序工作正常,直到昨天,今天开始给出错误 非法混合整理。我检查了我的数据库的每个表,所有的表及其列都在一个字符集和排序规则中: - utf8 utf8_unicode_ci。

我创建了另一个具有相同structrue的模式,并尝试执行相同的查询它工作正常,但不是在其原始模式。

任何人都可以提供任何意见吗?为什么会这样?


9652
2018-06-15 12:15


起源

实际的查询和错误消息将是有帮助的。 - VolkerK


答案:


我有同样的问题,我发现表有相同的排序规则,但列没有。 您可以下载mysqlyog试用版并在alter table中取消选中隐藏语言选项.... 最快的方式来看。


8
2017-07-20 07:41



我也有这个问题@Radmilo,如果我能通过你的快速回答解决这个问题,我必须非常感谢你! - swdev
确切地说是我的问题。列是。谢谢! - racl101


在我的情况下,这是由于愚蠢的mysql工作台 - 它以某种方式从模式(到某些元数据或什么)添加到过程默认排序规则,然后如果您将过程中的任何内容整理到不同的排序规则,则会发生此异常;

必须设置正确(在过程中使用的那个)整理到模式,然后重新编辑过程并应用更改(必须重新保存或重新创建),现在一切正常


4
2017-11-16 16:20





需要转换concat函数的每个参数。

CONCAT(CONVERT(field_A USING utf32), CONVERT(field_B USING utf32))

或者哪些功能可以解决您的问题。


2
2017-07-08 07:34





我的问题是一样的,但在我的情况下足够使用转换之前使用sql语句 - 在PHP中

iconv(...)

0
2017-07-27 09:34