Как изменить параметры сортировки таблицы по умолчанию? - PullRequest
168 голосов
/ 12 апреля 2009
create table check2(f1 varchar(20),f2 varchar(20));

создает таблицу с параметрами сортировки по умолчанию latin1_general_ci;

alter table check2 collate latin1_general_cs;
show full columns from check2;

показывает отдельные параметры сортировки столбцов как 'latin1_general_ci'.

Тогда каков эффект команды alter table?

Ответы [ 4 ]

553 голосов
/ 29 марта 2011

Чтобы изменить набор символов по умолчанию и параметры сортировки таблицы , включая символы существующих столбцов (обратите внимание, что преобразуется в предложение ):

alter table <some_table> convert to character set utf8mb4 collate utf8mb4_unicode_ci;

Отредактировал ответ, благодаря подсказке некоторых комментариев:

Следует избегать рекомендации utf8. Это почти никогда не то, что вы хотите, и часто приводит к неожиданным беспорядкам. Набор символов utf8 не полностью совместим с UTF-8. Набор символов utf8mb4 - это то, что вы хотите, если вы хотите UTF-8. - Рич Ремер 28 марта '18 в 23:41

и

Это кажется довольно важным, рад, что прочитал комментарии и спасибо @RichRemer. Никки, я думаю, тебе следует отредактировать это в своем ответе, учитывая количество просмотров. Смотрите здесь https://dev.mysql.com/doc/refman/8.0/en/charset-unicode-utf8.html и здесь В чем разница между наборами utf8mb4 и utf8 в MySQL? - Paulpro 12 марта в 17: 46

32 голосов
/ 12 апреля 2009

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

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

9 голосов
/ 12 апреля 2009

Устанавливает параметры сортировки по умолчанию для таблицы; если вы создаете новый столбец, он должен быть сопоставлен с latin_general_ci - я думаю. Попробуйте указать параметры сортировки для отдельного столбца и посмотрите, работает ли это. MySQL имеет очень странное поведение в отношении того, как он это обрабатывает.

1 голос
/ 21 сентября 2017

может потребоваться изменить SCHEMA, а не только таблицу

ALTER SCHEMA `<database name>`  DEFAULT CHARACTER SET utf8mb4  DEFAULT COLLATE utf8mb4_unicode_ci (as Rich said - utf8mb4);

(mariaDB 10)

...