Вопрос

У меня есть две физически отдельные базы данных 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top