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

时间:2009-06-15 12:15:20

标签: mysql collation

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

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

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

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

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

4 个答案:

答案 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(...)