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?
Ответы:
Чтобы изменить набор символов по умолчанию и параметры сортировки таблицы, в том числе существующих столбцов (обратите внимание на условие преобразования в ):
Отредактировал ответ, благодаря подсказке некоторых комментариев:
и
источник
utf8_bin
лучше не так ли? Какая разница междуutf8_bin
аutf8_unicode_ci
?utf8_bin
с учетом регистра иutf8_unicode_ci
без учета регистра. Одно не обязательно лучше другого - используйте то, что соответствует вашим потребностям.utf8
. Это почти никогда не то, что вы хотите, и часто приводит к неожиданным беспорядкам. Наборutf8
символов не полностью совместим с UTF-8. Наборutf8mb4
символов - это то, что вы хотите, если вы хотите UTF-8.MySQL имеет 4 уровня сортировки: сервер, база данных, таблица, столбец. Если вы измените параметры сортировки сервера, базы данных или таблицы, вы не измените настройки для каждого столбца, но измените параметры сортировки по умолчанию.
Например, если вы измените параметры сортировки по умолчанию для базы данных, каждая новая таблица, которую вы создаете в этой базе данных, будет использовать этот параметр сортировки, и если вы измените параметры сортировки таблицы по умолчанию, каждый столбец, который вы создаете в этой таблице, получит это сравнение.
источник
show variables like "collation%";
, так что всего SIX .Он устанавливает параметры сортировки по умолчанию для таблицы; если вы создаете новый столбец, он должен быть сопоставлен с latin_general_ci - я думаю. Попробуйте указать параметры сортировки для отдельного столбца и посмотрите, работает ли это. MySQL имеет очень странное поведение в отношении того, как он это обрабатывает.
источник
возможно, потребуется изменить SCHEMA не только таблицу
(mariaDB 10)
источник
<database name>
вместо<table name>
utf8
, ноutf8mb4
.