Конвертация данных в MySQL
Комментариев нет 17 марта 2013, 19:05 • Без рубрики
Этот блог имеет давнюю историю и, честно говоря, начинал он работать на очень древней версии MySQL. Я точно не помню — это была либо последняя версия из ветки 3 или первая версия ветки 4. Соответственно, исторически сложилось, что хранение данных было в latin1_swedish_ci, что до какого-то момента было не заметно, а потом начало доставлять неприятности. Вот, не далее, как сегодня я в очередной раз нарвался на неприятности из мира latin1 и решил, что хватит — нужно всё исправить.
Погуглив, я нашел очень изящное решение этой проблемы для современных версий MySQL (благо, что у меня достаточно новая версия стоит на сервере). Предварительно сделав резервную копию базы данных этого блога я провёл эксперимент на таблице со статьями и... ничего не поломалось! Теперь у меня БД этого блога в UTF-8 и мне думается, что часть неприятностей (если не все) благополучно сгинула со старой latin1.
Теперь рецепт, который состоит из двух шагов.
1. Установка кодировки базы данных:
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
2. Конвертация данных таблиц в UTF-8:
ALTER TABLE db_table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Надеюсь, что этот рецепт пригодится ещё кому-нибудь, а подробности по работе CONVERT () можно узнать здесь.