URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 68654
[ Назад ]

Исходное сообщение
"mysql: howto latin1.table.host1 move to utf8.table.host2"

Отправлено eightn , 03-Сен-06 01:05 
Каким образом можно перенести базу данный mysql, хранящуюся в кодировка latin1 на другой хост, попутно сконвертив базу в utf8?

На первом хосте (freebsd):
mysql> show variables like "char%";
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           |
| character_set_connection | latin1                           |
| character_set_database   | latin1                           |
| character_set_results    | latin1                           |
| character_set_server     | latin1                           |
| character_set_system     | utf8                             |
| character_sets_dir       | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
7 rows in set (0.01 sec)


на втором хосте (linux):

mysql> show variables like "char%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)


mysqldump на host1 и потом mysql <dump.sql не приводит ни к чему хорошему - русский текст в таблице корежится до неузнаваемости.

Пробовал предварительно сделать
alter table $table CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin
для всех таблиц базы на первом хосте

потом dump и restore на втором - все тоже самое, русские имена корежатся до крякозябр :(

Поиск в гугле внятностей не принес, в доке на mysql ничего подобного не разбирается (в рамках переноса на другой хост).

Кто нибудь занимался? Как решить проблему?


Опытным путем выяснилось, что, если в первом или втором описываемых вариантах, перед select() на новом хосте дать команду
set  character_set_results="latin1";
то русский язык появляется...

А как бы сделать, чтобы latin1 вообще не упоминался?


Содержание

Сообщения в этом обсуждении
"mysql: howto latin1.table.host1 move to utf8.table.host2"
Отправлено FreeBSDuser1803 , 03-Сен-06 16:28 
Берем дамп базы, открываем его в какомнибудь редакторе (я в WordPad), Правка > заменить
И меняем строчки типа Default Charset = xxx на ....ничего :) . И сохраняем в формате utf8 . Усё.