Charset и приоритет сортировки в MySQL - PullRequest
0 голосов
/ 11 октября 2018

В MySQL я могу настроить кодировку и параметры сортировки на уровне Сервер , База данных и Таблица .

Это тот же уровень приоритета?От самого низкого до самого конкретного?
Мне не удалось найти его в DOCS.

Например:

Уровень SERVER

SHOW VARIABLES LIKE "char%"; 
РЕЗУЛЬТАТЫ В:
character_set_client        utf8
character_set_connection    utf8
character_set_database      latin1
character_set_filesystem    binary
character_set_results       utf8
character_set_server        latin1
character_set_system        utf8

Уровень БД

SELECT * FROM information_schema.SCHEMATA;
РЕЗУЛЬТАТЫ В:
name        character_set_name  collation_name
my_database latin1              latin1_swedish_ci

Уровень ТАБЛИЦЫ

SELECT T.table_name, CCSA.character_set_name 
FROM information_schema.`TABLES` T,
     information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
  AND T.table_schema = "my_database";
РЕЗУЛЬТАТЫ В:
table_name      character_set_name
my_table1           latin1
my_table2           utf8

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

При создании таблицы используется параметр базы данных по умолчанию .
При создании столбца используется параметр таблицы по умолчанию .
Настройка столбца - единственноеэто имеет значение.

Ну, это не совсем так.Необходимо указать, какую кодировку (CHARACTER SET) и параметры сортировки использует клиент .Вот где character_set_client/connection/results вступает в игру.Эти 3 обычно устанавливаются одинаково, но им не нужно совпадать с CHARACTER SET.

столбца. Если столбец не соответствует этим настройкам, MySQL будет транскодировать байты на лету, как ониидти между клиентом и сервером.Обратите внимание, что это позволяет использовать разные кодировки для разных столбцов в одной и той же таблице . .

В предыдущем абзаце ничего не говорится о настройках таблицы и базы данных, поскольку они не имеют значения.(Поскольку они имеют значение по умолчанию .) Как только таблица была CREATEd, кодировка каждого столбца была «установлена ​​в камне».

0 голосов
/ 11 октября 2018

Подробные сведения о различных уровнях (сервер, база данных, таблица и столбец) вы найдете в этом разделе руководства 10.3 Указание наборов символов и сопоставлений и последующих страницах.На уровне базы данных, таблицы и столбца указывается, что набор символов и сопоставление с предыдущего уровня используются, если вы не установили его явно, что приравнивает ваше представление о наименьшем к наиболее конкретному.

...