Несогласованные ошибки MySQL COLLATE в базах данных
-
20-09-2019 - |
Вопрос
У меня есть две физически отдельные базы данных MySQL, к которым мне нужно выполнить один запрос.
В запросе есть раздел SQL, который выглядит следующим образом:
and foo_table.bar_column like concat('%', rules.pattern, '%') COLLATE utf8_general_ci
Он отлично работает в базе данных A, но в базе данных B я получаю эту ошибку:
ERROR 1253 (42000): COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'
Если я удалю параметры сортировки, они будут работать нормально в базе данных B, но в базе данных A я получаю эту ошибку:
ERROR 1267 (HY000): Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation 'like'
Существует ли версия запроса, которая будет работать в обеих базах данных?
Или есть ли конфигурация, которую я могу изменить в любой базе данных, чтобы запрос был удовлетворен в обоих местах?
Обновлять:
База данных A - версия 5.1.38, база данных B - версия 5.1.34
Решение
Некоторые многообещающие информация здесь.
ОБНОВЛЯТЬ: предложения по этой ссылке решили мою проблему, хотя синтаксис немного устарел, и вам больше не нужно конвертировать каждый столбец, а только таблицу.
ALTER TABLE the_latin_one CONVERT TO CHARACTER SET utf8;