MySQL information_schema change COLLATIONS IS_DEFAULT - PullRequest
0 голосов
/ 12 июня 2018

У меня проблемы с настройкой параметров сортировки по умолчанию для кодировок utf8mb4 и utf8 в настройках Percona XtraDB.Если я напишу запрос, подобный следующему:

SET @ue = 'test@email.com';

SET @u = (SELECT u.ID FROM db.users u 
WHERE u.user_email = @ue);

Сбой с сообщением ниже:

/* SQL Error (1267): Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operation '=' */

Это, кажется, потому что значение сеанса collation_connection всегда устанавливается как utf8mb4_general_ci.Глобальное значение для этой переменной - utf8_unicode_ci , которое все еще не совсем правильно, но более предпочтительно.

Я не могу на всю жизнь найти, откуда взялась эта переменная сеанса.Я заглянул внутрь information_schema.COLLATIONS и вижу, что utf8_general_ci и utf8mb4_general_ci выглядят следующим образом:

--------------------------------------------------------
| COLLATION_NAME     | CHARACTER_SET_NAME | IS_DEFAULT |
--------------------------------------------------------
| utf8_general_ci    | utf8               | Yes        |
--------------------------------------------------------
| utf8mb4_general_ci | utf8mb4            | Yes        |
--------------------------------------------------------

И все жеЯ действительно не хочу, чтобы эти параметры сортировки использовались по умолчанию?

Я пытался поместить эти значения в каждый из файлов my.cnf узлов, и это, похоже, не оказывает никакого влияния:

[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake

Любая помощь с благодарностью.

...