Mysql сортировка таблицы отличается от сортировки базы данных на Windows - PullRequest
0 голосов
/ 30 марта 2020

Я всегда запускал mysql на Linux, но на прошлой неделе я установил mysql на свой ноутбук Windows 10. Я установил набор символов и параметры сортировки по умолчанию следующим образом:

[mysqld]

character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

Это похоже на то, что когда я создаю базу данных без ее указания, набор символов и сопоставление базы данных кажутся правильными.

Однако, когда я импортирую SQL в эту базу данных, все таблицы внезапно имеют параметры сортировки "utf8mb4_0900_ai_ci". Хотя это было бы хорошо для меня (так как это хорошее сравнение для использования), люди, с которыми я работаю, не могут работать с этим сопоставлением.

Процесс
Я создаю mysqldump из командная строка на моем Linux vm. База данных работает и на моем Linux vm. Текущий набор символов "utf8" с сопоставлением "utf8_general_ci". Кажется, что сам файл дампа не содержит информации о сопоставлении.

Затем я импортирую этот файл в mysql (который запускается при моей установке Windows) через командную строку Linux (подключение к 10.10.10.1). .

Итак: почему mysql использует это сопоставление, а я указал иначе?

1 Ответ

0 голосов
/ 31 марта 2020

utf8mb4_0900_ai_ci - это [сопоставление по умолчанию] [1] для utf8mb4 -charset. Когда вы загружаете файл SQL и не указываете параметры сортировки, будет использоваться параметры сортировки по умолчанию. Посмотрите на переменные, введя команду:

mysql> show variables like '%collation%';

Вы можете изменить значение переменной default_collation_for_utf8mb4 или использовать:

SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci

, чтобы определить параметры сортировки для соединения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...