简体   繁体   English

MYSQL错误:排序规则的非法混合

[英]MYSQL ERROR: Illegal Mix of Collations

i am receiving the following error message 我收到以下错误消息

[Err] 1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '=' [Err] 1267-操作'='的排序规则(latin1_swedish_ci,IMPLICIT)和(utf8_general_ci,COERCIBLE)的非法混合

Subquery contains Union of two tables from two different databases. 子查询包含来自两个不同数据库的两个表的并集。 The query i am trying to execute is given below 我试图执行的查询如下

 SELECT c.CORRECTION_NO FROM ( SELECT "regm2017" as `SESSION`,SERIALNO,NAME,FATHER FROM regm2017.master r17 WHERE r17.IS_DELETED=0 UNION SELECT "regm2016" as `SESSION`,SERIALNO,NAME,FATHER FROM regm2016.master r16 WHERE r16.IS_DELETED=0 ) as r JOIN corrections_registration as c ON c.SERIALNO = r.SERIALNO AND c.`SESSION`= r.`SESSION`; 

It happened due to variation in collation.If you give any values explicitly in Query,collation be will taken from Connection. 这是由于排序规则的变化而引起的。如果您在Query中显式提供任何值,则将从Connection中获取排序规则。

You can use something like this. 您可以使用类似这样的东西。

  SELECT c.CORRECTION_NO FROM ( SELECT "regm2017" COLLATE utf8_general_ci as > `SESSION`,SERIALNO,NAME,FATHER FROM regm2017.master r17 WHERE r17.IS_DELETED=0 UNION SELECT "regm2016" COLLATE utf8_general_ci as `SESSION`,SERIALNO,NAME,FATHER FROM regm2016.master r16 WHERE r16.IS_DELETED=0 ) as r JOIN corrections_registration as c ON c.SERIALNO = r.SERIALNO AND c.`SESSION`= r.`SESSION`;` 

OR 要么

  SELECT c.CORRECTION_NO FROM ( SELECT "regm2017" COLLATE latin1_swedish_ci as `SESSION`,SERIALNO,NAME,FATHER FROM regm2017.master r17 WHERE r17.IS_DELETED=0 UNION SELECT "regm2016" COLLATE latin1_swedish_ci as `SESSION`,SERIALNO,NAME,FATHER FROM regm2016.master r16 WHERE r16.IS_DELETED=0 ) as r JOIN corrections_registration as c ON c.SERIALNO = r.SERIALNO AND c.`SESSION`= r.`SESSION`; 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM