这个错误信息表明在执行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;

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐