У меня проблемы с настройкой параметров сортировки по умолчанию для кодировок 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
Любая помощь с благодарностью.