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

20 浏览
0 Comments

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。

我创建了另一个具有相同结构的模式,并尝试执行相同的查询,它运行正常,但在原始模式上却不行。

有人可以提供任何关于这个问题的说明吗?为什么会发生这种情况?

0
0 Comments

MySQL Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' 是一个常见的MySQL错误,它指示在执行操作“=”时,出现了两种不同的字符集(collation)的混合。

造成这个问题的原因是,MySQL数据库中的每个列都有一个字符集和一个排序规则(collation)。当在查询中使用不同字符集的列进行比较时,就会出现这个错误。具体来说,这个错误通常在比较字符串时出现,因为字符串有不同的字符集和排序规则。

解决这个问题的方法是将所有参与比较的列的字符集和排序规则统一起来。有几种方法可以做到这一点。一种方法是使用CONVERT函数将参与比较的列转换为相同的字符集。例如,可以使用以下代码将参与比较的两个列转换为utf32字符集:

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

以上代码将通过将field_A和field_B列转换为utf32字符集来解决混合字符集的问题。在使用CONCAT函数时,确保对每个参与比较的列都使用相同的字符集转换。

除了使用CONVERT函数,还可以使用其他适当的函数来解决这个问题。关键是确保所有参与比较的列具有相同的字符集和排序规则。

总结起来,MySQL Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' 错误的出现是因为在比较字符串时使用了不同的字符集。解决这个问题的方法是统一参与比较的列的字符集和排序规则。可以使用CONVERT函数将参与比较的列转换为相同的字符集,或者使用其他适当的函数来实现这一目标。确保所有参与比较的列具有相同的字符集和排序规则将解决这个错误。

0
0 Comments

在我的情况下,这是由于愚蠢的MySQL Workbench引起的——它以某种方式将默认排序规则添加到存储过程中(添加到某些元数据或其他内容中),然后如果在存储过程中使用了不同的排序规则,就会出现这个异常;

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

在上述内容中,我们可以看到这个问题的原因是由于MySQL Workbench添加了默认排序规则到存储过程中,导致存储过程中使用了不同的排序规则,从而引发了该异常。

解决该问题的方法是将正确的排序规则设置给模式,并重新编辑存储过程并应用更改。

下面是解决方法的具体步骤:

1. 打开MySQL Workbench,并连接到相应的数据库。

2. 找到并选择存储过程所在的模式。

3. 在模式的属性中,找到并选择正确的排序规则,即与存储过程中使用的排序规则相同的排序规则。

4. 保存并关闭模式的属性窗口。

5. 打开存储过程,并进行编辑。

6. 确保存储过程中使用的排序规则与模式的排序规则相同。

7. 重新保存存储过程,并关闭存储过程的编辑窗口。

通过以上步骤,我们成功解决了"MySQL Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '=' "这个问题。

0
0 Comments

MySQL的错误信息提示:Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='。这个错误出现的原因是表的字符集(collation)不一致。具体原因是表的字符集(collation)与列的字符集(collation)不匹配。

解决这个问题的方法是将表的字符集(collation)与列的字符集(collation)统一设置为一致的字符集(collation)。

以下是解决方法的具体步骤:

1. 下载并安装MySQL的可视化管理工具mysqlyog(试用版)。

2. 打开mysqlyog,并连接到MySQL数据库。

3. 在mysqlyog中找到需要修改字符集(collation)的表。

4. 右键点击表,选择“Alter Table”选项。

5. 在弹出的对话框中,取消勾选“Hide language options”选项。

6. 在对话框中找到“Collation”选项,并选择与列的字符集(collation)一致的字符集(collation)。

7. 点击“OK”按钮保存修改。

8. 重复以上步骤,对所有表进行相同的操作,确保所有表的字符集(collation)与列的字符集(collation)一致。

通过以上步骤,我们可以解决MySQL的错误信息:Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='。

0