Моя база данных не в UTF8, и я хотел бы преобразовать все таблицы в UTF8, как я могу это сделать?
Как изменить все таблицы в моей базе данных на набор символов UTF8?
Ответы (4)
Для одной таблицы вы можете сделать что-то вроде этого:
ALTER TABLE tab CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Для всей базы данных я не знаю другого метода, кроме похожего на этот:
http://www.commandlinefu.com/commands/view/1575/convert-all-mysql-tables-and-fields-to-utf8.
person
Tomasz Zieliński
schedule
27.01.2010
Те, у кого нет доступа к командной строке, могут быстро запустить
SHOW TABLES;
в своей базе данных, вставить их в NimbleText на странице nimbletext.com/live, а затем используйте этот шаблон для создания сценария изменения: ALTER TABLE `$0` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
- person jocull; 05.11.2013
Это подать заявку на базу данных 125 МБ? '
- person ValRob; 12.06.2018
замените my_database_name
именем своей базы данных
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'my_database_name' AND TABLE_TYPE != 'VIEW';
это создаст множество запросов, которые вы можете запустить
person
Thu 01 Jan 1970 000000 GMT
schedule
19.01.2018
Вы также должны добавить `AND Table_Type! = 'VIEW' '
- person Smith; 10.04.2018
В то же время я бы посоветовал перейти не на utf8, а на utf8mb4, чтобы можно было сохранить символы астрального плана, такие как смайлики.
- person Michael Scott Cuthbert; 23.11.2018
А еще лучше использовать набор инструментов Percona. Я бы проверил ваши индексы перед обновлением до utf8mb4, поскольку есть проблемы с длиной ключа.
SELECT CONCAT('pt-online-schema-change --alter "CONVERT TO CHARACTER SET utf8
COLLATE utf8_unicode_ci" t=', TABLE_NAME, ',D=DB_NAME,u=USER_NAME --statistics --execute')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'DB_NAME' AND TABLE_TYPE != 'VIEW' AND TABLE_COLLATION NOT LIKE '%utf8%';
person
tippingpints
schedule
20.03.2019
person
schedule
И, надеюсь, ваша база данных не содержит latin1 внутри какого-либо контента, такого как сообщения в блогах о кодировке символов ... иначе у ваших пользователей могут быть основания для судебного процесса, если ваш сайт преобразования сообщений внезапно предлагает ошибочные команды базы данных!
- person Charlie Gorichanaz; 15.05.2014
после sed: uconv --from-code latin1 --to-code utf8 dump_utf.sql ›dump_utf_fixed.sql
- person scribe; 05.06.2015
@marcolopes The s tream ed itor.
man sed
или поищите его в Википедии и т.п.
- person Nick T; 04.12.2017
@marcolopes что-то она седла =)
- person Eli; 25.04.2019