MySQL UTF8 Миграция базы данных - PullRequest
2 голосов
/ 18 декабря 2009

У меня проблемы с переносом базы данных utf8 на другой сервер ... Каждая таблица источника и назначения имеет "DEFAULT CHARSET=utf8".

Я использую mysqldump для выгрузки данных и mysql < file.sql для импорта, но когда в исходной таблице у меня есть «España», в пункте назначения я получаю «España».

Я прочитал несколько руководств, я использовал --default-character-set=latin1 для экспорта и импорта, но проблема остается. Я также попытался импортировать --default-character-set=utf8, но результат: «Espa», данные усекаются до первого появления многобайтового символа.

Мне нужна помощь!

Заранее спасибо

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Очень важно убедиться, что клиент настроен на UTF8. Смущает, что это не то же самое, что установка вашей базы данных в UTF8. Откройте /etc/my.cnf и убедитесь, что у вас есть default-набор символов = utf8 в [mysql], а не просто в [mysqld]

Теперь вы должны иметь возможность направлять дампы UTF8 непосредственно в клиент mysql. Я также рекомендую использовать параметр --hex-blob в команде mysqldump, так как mysqldump не идеален.

1 голос
/ 07 марта 2010

попробуй

iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./file >file.utf8
mysql --default-charset=utf8 < file.utf8 

Если это не работает, советую импортировать данные, а затем преобразовать их

ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

надеюсь, это поможет

0 голосов
/ 18 декабря 2009

Что такое collation каждой таблицы? Похоже, 2-я таблица все еще закодирована в формате ISO-8859-1 или аналогичной

Плюс, какой инструмент вы используете для просмотра данных о месте назначения? Вы уверены, что соединение, которое использует инструмент, также является UTF-8?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...