ОШИБКА MYSQL: незаконное сочетание сопоставлений
Я получаю следующее сообщение об ошибке
[Err] 1267 - недопустимое сочетание параметров сортировки (latin1_swedish_ci,IMPLICIT) и (utf8_general_ci,COERCIBLE) для операции '='
Подзапрос содержит объединение двух таблиц из двух разных баз данных. Запрос, который я пытаюсь выполнить, приведен ниже.
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`;
1 ответ
Это произошло из-за различий в сопоставлении. Если вы укажете какие-либо значения явно в Query, сопоставление будет взято из Connection.
Вы можете использовать что-то вроде этого.
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`;`
ИЛИ ЖЕ
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`;