ОШИБКА 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`;
Другие вопросы по тегам