Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for opera
这个错误信息表明在执行SQL查询时,您尝试比较两个字段或值,但这些字段或值使用了不同的字符集校对规则(collation)。具体来说,一个是 utf8mb4_unicode_ci,另一个是 utf8mb4_general_ci。MySQL不允许直接比较具有不同校对规则的字符串,除非明确地转换它们中的一个。如果合适,可以考虑将所有相关列的校对规则统一。您可以在SQL查询中使用 COLLATE 关键字
·
这个错误信息表明在执行SQL查询时,您尝试比较两个字段或值,但这些字段或值使用了不同的字符集校对规则(collation)。具体来说,一个是 utf8mb4_unicode_ci,另一个是 utf8mb4_general_ci。MySQL不允许直接比较具有不同校对规则的字符串,除非明确地转换它们中的一个。
解决方案
1. 修改查询以显式指定校对规则
您可以在SQL查询中使用 COLLATE 关键字来强制其中一个操作数使用特定的校对规则。例如:
select u.* ,wu.open_id
from order_user u
INNER JOIN order_user_kehu uk on uk.user_id=u.id
INNER JOIN wx_user wu on wu.union_id COLLATE utf8mb4_general_ci =u.union_id
where ifnull(u.union_id,'')!=''
2. 更改表结构中的校对规则
如果合适,可以考虑将所有相关列的校对规则统一。这可能需要修改表定义。例如,要将某一列的校对规则改为 utf8mb4_unicode_ci:
ALTER TABLE your_table MODIFY column1 VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
更多推荐


所有评论(0)