Поиск

Преобразование символьных столбцов версии 4.0. в формат версии 4.1

Обычно сервер при запуске по умолчанию использует символьный набор latinl. Ес­ли у вас данные столбцы хранятся в другом символьном наборе, который сервер 4.1 те­перь поддерживает непосредственно, вы можете преобразовать такие столбцы. Однако вы должны избегать прямого преобразования latinl в реальный символьный набор. Это может привести к потере данных. Вместо этого преобразуйте столбцы сначала в бинарный тип, а затем из бинарного в небинарный с требуемым символьным набором. Преобразование в бинарный тип и из бинарного типа не пытается преобразовывать зна­чения символов и предохраняет ваши данные. Например, предположим, что у вас есть таблица из версии 4.0 с тремя столбцами, которые применяются для хранения значений в latinl, Iatin2 и utf 8:
CREATE TABLE t (
latinl_col CHAR(50),
Iatin2_col CHAR(IOO),
utf8_col CHAR(150) );
После обновления сервера до версии MySQL 4.1, вы хотите преобразовать табли­цу так, чтобы оставить без изменений столбец latinl_col, но изменить столбцы Iatin2_col и utf 8_col так, чтобы они имели наборы символов Iatin2 и utf 8.

Сначала создайте резервную копию таблицы, а затем преобразуйте столбцы следую­щим образом:
ALTER TABLE t MODIFY Iatin2_col BINARY(100);
ALTER TABLE t MODIFY utf8_col BINARY(150);
ALTER TABLE t MODIFY Iatin2_col CHAR(100) CHARACTER SET Iatin2;
ALTER TABLE t MODIFY utf8_col CHAR(150) CHARACTER SET utf8;
Первые два оператора убирают информацию о наборе символов из столбцов Iatin2_col и utf8_col. Вторые два оператора назначают им правильные символьные наборы.
Если хотите, можете скомбинировать преобразование в бинарный набор и обратно в объединенные операторы:
ALTER TABLE t
MODIFY Iatin2_col BINARY(100),
MODIFY utf8_col BINARY(150); ALTER TABLE t
MODIFY Iatin2_col CHAR(100) CHARACTER SET Iatin2,
MODIFY utf8_col CHAR(150) CHARACTER SET utf8;