【问题标题】:MySQL Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='MySQL非法混合排序规则(utf8_unicode_ci,IMPLICIT)和(utf8_general_ci,IMPLICIT)用于操作'='
【发布时间】:2010-11-03 00:08:52
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 实际的查询和错误信息会有所帮助。

标签: mysql collation


【解决方案1】:

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

【讨论】:

  • 我也遇到了这个问题@Radmilo,如果我能够通过你的快速回答解决这个问题,我必须说非常感谢你!
  • 正是我的问题。列就是。谢谢!
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    或者你有什么问题。

    【讨论】:

      【解决方案4】:

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

      iconv(...)
      

      【讨论】:

        猜你喜欢
        • 2012-07-30
        • 2020-04-15
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 2018-01-19
        • 2017-10-17
        • 1970-01-01
        • 2023-03-21
        相关资源
        最近更新 更多