MySQL - нелегальное сочетание сортировок (utf8_general_ci, COERCIBLE) и (latin1_swedish_ci, IMPLICIT) для операции "UNION"
Как я могу исправить эту ошибку раз и навсегда? Я просто хочу иметь возможность создавать союзы в MySQL.
(Я ищу ярлык, как вариант, чтобы заставить MySQL игнорировать эту проблему или угадывать ее лучше, не глядя на изменение сортировки на 100 таблицах... по крайней мере, не сегодня)
Ответы
Ответ 1
Не уверен о mySQL, но в MSSQL вы можете изменить сортировку в запросе, например, если у вас есть две таблицы с различной сортировкой, и вы хотите присоединиться к ним или как в вашей ситуации ящик UNION вы можете сделать
select column1 from tableWithProperCollation
union all
select column1 COLLATE SQL_Latin1_General_CP1_CI_AS from tableWithDifferentCollation
Конечно, SQL_Latin1_General_CP1_CI_AS - это просто пример сортировки, который вы хотите "преобразовать" в
Ответ 2
Спасибо Кристофу. В этом случае это вызвано выбором литерала в первом выборе, а не из разных сопоставлений таблиц.
По иронии судьбы, я получил его, выполнив этот старый пост в блоге, который я сделал для этой проблемы.
Ответ 3
Исправление, которое я обнаружил, похоже, является простым решением - это изменить всю базу данных, которая дает вам проблемы. Я думаю, что это не лучший способ сделать это, но это работает для меня, и это легко. Я использую эту команду в MySQL:
ALTER DATABASE databasename COLLATE utf8_unicode_ci;