11

我需要您的帮助来确定为什么会出现此错误

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

该程序直到昨天都运行良好,今天它开始给出非法混合排序规则的错误。我检查了数据库的每一个表,所有表及其列都在一个字符集和排序规则中,即:-utf8 utf8_unicode_ci。

我创建了另一个具有相同结构的架构并尝试执行相同的查询,它工作正常,但不适用于其原始架构。

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

4

4 回答 4

8

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

于 2011-07-20T07:41:35.657 回答
4

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

必须设置正确的(在程序中使用的)排序规则,然后重新编辑程序并应用更改(必须重新保存或重新创建),现在一切正常

于 2012-11-16T16:20:42.140 回答
4

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

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

或者您遇到的问题。

于 2014-07-08T07:34:02.793 回答
0

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

iconv(...)
于 2015-07-27T09:34:48.170 回答