Заметки / Смена кодировки поля

MySQL
 При переносе сайта с одного хостинга на другой может возникнуть потребность в изменении его настроек. В число этих изменений может войти и смена кодировки записей в таблице базы данных. В этой заметке дана инструкция по процедуре такой смены для популярной среди веб-мастеров, предпочитающих использовать в своей работе некоммерческие продукты, базы данных MySQL. При непосредственном изменении кодировки для текстового поля MySQL-таблицы, данные останутся в прежнем виде, из-за чего полностью потеряют читабельный вид, так как перестанут соответствовать установленной кодировке. Поэтому, смену кодировки следует начинать, в первую очередь, с перекодирования содержимого таблицы. Это можно сделать следующим образом:

 1. Привести тип каждого текстового поля к BINARY.
 2. Поставить новую кодировку.
 3. Снова установить текстовый тип поля.

Так как ячейка бинарного типа имела фиксированный размер, а текст который хранился в ней - произвольный, в ячейку добавятся нулевые байты, покрывая эту разницу в длинах. Чтобы вычистить из данных "мусор", можно выполнить подобный запрос:
UPDATE `table` SET `field_name`=REPLACE(`field_name`,'\0','');

Преобразование закончено.

В заключение - полезный совет: делайте резервную копию данных, перед любыми манипуляциями с ними.

Спасибо за внимание.

18.07.2010