Как изменить Collation на utf8_bin за один раз

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

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

Ответ 1

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

ALTER TABLE <table name> COLLATE utf8_general_ci;

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

ALTER TABLE <table name> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Ответ 2

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

ALTER DATABASE  `DATABASE_NAME` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci

Ответ 3

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

alter table table_name collate=utf8_general_ci;

Ответ 4

Вот два способа. Сначала я работал на меня. От терминала (просто запомните резервное копирование раньше.)

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'