Как изменить Collation на utf8_bin за один раз - PullRequest
10 голосов
/ 24 января 2011

Я настроил параметры сортировки всех таблиц базы данных как latin1_swedish_ci, и теперь я понимаю, что должен использовать utf8_bin или utf8_general_ci.

Как можно изменить параметры сортировки в таблицах на utf8_bin или utf8_general_ci за один раз? Могу ли я использовать запрос или что-то?

Ответы [ 4 ]

29 голосов
/ 24 января 2011

Вам просто нужно запустить ALTER для каждой из таблиц следующим образом:

ALTER TABLE <table name> COLLATE utf8_general_ci;

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

ALTER TABLE <table name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
10 голосов
/ 05 октября 2012

Вы также можете обновить параметры сортировки базы данных:

ALTER DATABASE  `DATABASE_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci
0 голосов
/ 03 декабря 2015

Вот два способа. Первый работал на меня. Из терминала (Просто не забудьте сделать резервную копию раньше.)

mysql --database=dbname -B -N -e "SHOW TABLES"  | awk '{print "ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;"}' | mysql --database=dbname &

Источник: Commandlineinfu.com

из MySQL вам придется использовать команду Concat

SELECT CONCAT('ALTER TABLE `', tbl.`TABLE_SCHEMA`, '`.`', tbl.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') FROM `information_schema`.`TABLES` tbl WHERE tbl.`TABLE_SCHEMA` = 'dbname'
0 голосов
/ 24 января 2011

Вы можете изменить параметры сортировки таблицы с помощью ALTER TABLE:

alter table table_name collate=utf8_general_ci;
...