MySQL非法混合字符集(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)用于操作 '='。

11

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

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

这个过程昨天还可以,今天开始报“illegal mix of collations”错误。我检查了数据库中的每个表格,所有表格和列都在一个字符集和校对规则中:- utf8 utf8_unicode_ci。

我创建了另一个与原来相同结构的模式,并尝试执行相同查询,它可以正常工作,但在原始模式下却不行。

有人能提供任何关于这个问题的建议吗?为什么会出现这种情况?


1
实际的查询和错误信息会很有帮助。 - VolkerK
请查看我的帖子,也许对你有用。https://dev59.com/FGgt5IYBdhLWcg3w2RCU#71659466 - pankaj
4个回答

8

我遇到了同样的问题,发现表格具有相同的排序规则,但列没有。 您可以下载mysqlyog试用版,在修改表格时取消隐藏语言选项...... 这是最快的方法。


4

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

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

或者您遇到的任何函数都有问题。

4

在我的情况下,这是由于愚蠢的mysql workbench引起的 - 它会从模式中添加默认排序规则到某些元数据或其他内容,然后如果您将过程中的任何内容排序到不同的排序规则中,则会出现此异常;

必须将正确的(用于过程的)排序规则设置为模式,然后重新编辑过程并应用更改(必须重新保存或重新创建),现在一切都正常了。


0

我的问题也一样,但在我的情况下,在使用 SQL 语句之前进行转换就足够了 - 在 PHP 中

iconv(...)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接