2016-04-18 3 views
0

У меня есть приложение, которое собрало значительное количество данных за последние пару лет, данные хранятся во многих таблицах mysql; Однако все таблицы были установлены наОпасности изменения кодировки в mysql

Encoding cp1252 West European (latin1) 
Collation: latin1_swedish_ci 

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

Encoding: UTF-8 Unicode (utf8mb4) 
Collation: utf8mb4_general_ci 

Я знаю, как изменить таблицы, но у меня есть много таблиц с ~ миллионом строк данных, что опасности в изменении всех кодировок таблиц?

Помимо резервного копирования всего, могу ли я сделать что угодно, чтобы свести к минимуму риск?

ответ

1

Если у вас нет столбцов символов в качестве внешних ключей, преобразование безопасно, так как все символы первого из них присутствуют во втором, но с utf8mb4_general_ci у вас могут быть изменения в упорядочении при сортировке строк по столбцам символов , Если это проблема для вас, попробуйте вместо этого использовать utf8mb4_unicode_ci.

Если у вас есть внешние ключи, вы должны отключить foreign_key_checks и включить его только после преобразования всех таблиц.

Кроме того, alter table, вероятно, заблокирует таблицу и создаст копию, поэтому, если вы делаете это на производственном сервере, будьте готовы к простою.

Смежные вопросы