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

Исходное сообщение
"Раздел полезных советов: Перенос данных из MySQL 4.0 в 4.1.x через mysqldump от нового MySQL"

Отправлено auto_tips , 20-Янв-05 17:14 
Итак, ситуация:
  -  новый db-сервер, с mysql 4.1.7
  -  необходимость проапгрейдить клиентскую библиотеку на тех серверах которые к нему будут обращаться.
  - необходимость миграции данных с других mysql, которые 4.0
  - базы все в cp1251

В качестве эксперимента апгрейдим mysql-client до 4.1.7 на первом db-сервере,
где стоит 4.0.20 и отпадание mysql-client'а на, пусть даже час, ни к чему фатальному не приведет...
На первый взгляд все гладко заапгрейдилось.

Вечером апгрейдим Mysql-client где надо, чего надо пересобираем... пока все гладко.

Начинаем миграцию данных, с того сервера где мы обновили Mysql-client в первую очередь.

Маленькая ремарка:  mysql-(client|server) были собраны из портов с
    WITH_LINUXTHREADS=yes
    BUILD_STATIC=yes
    BUILD_OPTIMIZED=yes
, т.е. с чарсетами по-умолчанию

  - делаем дамп командой mysqldump --opt database > database.sql
  - копируем дамп на новый сервер
  - там в /etc/my.cnf уже прописано в [mysqld] default-character-set=cp1251.
  - говорим create database db_name
  - потом \. database.sql
  - дамп разворачивается, но... с матами на дублирование ключа и с вопросиками в место русских буковок.
  - пробуем set names cp1251 и снова развернуть дамп - та же история.

Потом пол-дня пробуем всякие разные комбинации с пересборкой mysql-server и всякими
настройками charset/collation, в результате удосуживаемся присмотреться к дампу
и увидеть там 'SET NAMES utf8' в самом начале. После замены оного на 'set names cp1251',
все встало на свои места.

Этот "set names utf8" появился когда новый mysqldump из mysql-client-4.1.7 взялся дампить
базу с cp1251 и, не получив информацию о collation/charset выставил то, что считал разумным - utf8.

Лечится созданием дампа с --skip-set-charset.


URL:
Обсуждается: https://www.opennet.ru/tips/info/775.shtml


Содержание

Сообщения в этом обсуждении
"Перенос данных из MySQL 4.0 в 4.1.x через mysqldump от нового MySQL"
Отправлено Vasiok , 20-Янв-05 17:14 
Н-да. А достаточно лишь собрать клиентскую либу с указанием дефолтного чарсета.

"Перенос данных из MySQL 4.0 в 4.1.x через mysqldump от нового MySQL"
Отправлено mdv , 20-Янв-05 18:03 
Есть такое, но когда разобрались было уже поздно ;) дв и не все собирают с указанием чарсета. в общем знания полученные в решении проблемы - полезны в любом случае ;)

"Перенос данных из MySQL 4.0 в 4.1.x через mysqldump от нового MySQL"
Отправлено vasiok , 21-Янв-05 23:36 
Да штука в том, что если у вас уже есть куча кода, которая работает с этим мускулем, то либу-то таким образом пересобрать всё равно придётся, дабы потом set names не делать после каждого коннекта к базе. Это хорошо, если код написан так, как он должен быть написан и исправление нужно будет внести лишь в одном месте. Но, как показывает практика, это обычно не так. :-)

"Перенос данных из MySQL 4.0 в 4.1.x через mysqldump от нового MySQL"
Отправлено azimut , 20-Апр-08 14:15 
Молодца. А теперь вдупли что писать надо было default_character_set, а не default-character-set как ты..