Моята база данни не е в 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
Прилага ли се за база данни от 125MB?'
- 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 Редакторът на спотоци.
man sed
или го потърсете в Wikipedia или други подобни.
- person Nick T; 04.12.2017
@marcolopes нещо, което тя направи =)
- person Eli; 25.04.2019