[Err] 1267 - Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf32_bin,IMPLICIT) for operation '='
背景
在使用到子查询时遇到的问题,具体报错如下截图:
具体sql如下:
SELECT
kw.*
FROM
stpc_keywords_rank_kw kw
WHERE
kw.last_time = 1
AND kw.keyword NOT IN (
SELECT
rank.keywords
FROM
stpc_keywords_rank rank
WHERE
`day` = '1595779200'
)
解决方法
查看了两个标题的结构,发现问题在于字符编码,collate这里。
首先需要看到表结构,如下sql:
show create table stpc_keywords_rank_kw
下面是对比sql结果:
总结
使用下面的sql修改为相同的字符编码collate。达到两表字符编码统一,再次执行即可。
alter table table_name default character set utf8mb4 collate=utf8mb4_general_ci;