Каким образом можно перенести базу данный 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 вообще не упоминался?