Проблема: Параметры сортировки MySQL uuid () по умолчанию не сравниваются с настроенными параметрами сортировки соединений.
У меня есть база данных + таблицы + поля, созданные с помощью charset: utf-8 и параметров сортировки utf8_polish_ci.
my.cnf выглядит следующим образом:
init_connect='SET NAMES utf8 COLLATE utf8_polish_ci'
character-set-server=utf8
collation-server=utf8_polish_ci
наборов символов:
mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
сопоставлений:
mysql> SHOW VARIABLES LIKE 'collation%';
+----------------------+----------------+
| Variable_name | Value |
+----------------------+----------------+
| collation_connection | utf8_polish_ci |
| collation_database | utf8_polish_ci |
| collation_server | utf8_polish_ci |
+----------------------+----------------+
Теперь при использованиифункция uuid()
, возвращается следующая ошибка:
mysql> select replace(uuid(),'-','');
ERROR 1270 (HY000): Illegal mix of collations (utf8_general_ci,COERCIBLE), (utf8_polish_ci,COERCIBLE), (utf8_polish_ci,COERCIBLE) for operation 'replace'
Это происходит из-за того, что по умолчанию сортировка uuid()
выглядит как utf8_general_ci.
mysql> select charset(uuid()), collation(uuid());
+-----------------+-------------------+
| charset(uuid()) | collation(uuid()) |
+-----------------+-------------------+
| utf8 | utf8_general_ci |
+-----------------+-------------------+
Есть ли способ, чтобы изменить параметры сортировки по умолчанию, используемые uuid (), чтобы они соответствовали collation_connection
?
. В нашей среде мы пишем обновления SQL, которые выполняются в разных базах данных MySQL с разными параметрами сортировки.Следовательно, принудительно устанавливать сопоставление, указав его, не вариант.