mysq报错 Illegal mix of collations (utf8mb4_0900_as_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT) for operation ‘=’
现象:
执行sql语句
select t2.ID,t2.NAME,t4.DOCUMENT_PAGE,T5.USER_NAME from se_task_plan_template t1 inner join se_task_plan_task_data t2 on t1.id=t2.task_id inner join se_basic_data t3 on t2.type_id=t3.id
inner join se_development_version_list t4 on t2.development_version_id=t4.id inner join sys_user t5 on t4.creator=t5.user_id where t1.project_id=‘4MBRH4NKTUKG’ and t3.column1=‘工作产品’ and t2.in_out=‘2’
and not exists(select 1 from se_task_plan_template where parent_id=t1.id )
报错如下:
分析:
该错误由于多表联接时,关联字段的字符集不一致。
FROM 表1 INNER JOIN 表2 ON 表1.字段1 比较运算子 表2.字段2
两个表连接的字段,譬如 [表1.字段1=表2.字段2],必须具有相同的字段类型,但是字段名称不需要相同且字符集和排序规则必须一致
解决方案:
逐一查找各表的关联字段,修改为一致字符集或排序规则即可。
上示例sql通过查找sys_user表中的user_id与se_development_version_list表中的creator排序规则不一致。
修改排序规则后执行成功如下: