Задавайте вопросы, мы ответим
Вы не зашли.
Всем добрый день.
Есть огромная необходимость периодически перекидывать базу данных InnoDB с сервера провайдера себе на комп (localhost). Структура базы переноситься без проблем, а вот содержимое таблиц уезжает - индексы primary key у которых значения равно нулю оказываться на последней строчке с совершенно другим индексом. В одной из таблиц при этом еще светиться ошибка дублирующихся ключей.
Переносить пробовал с помощью MySQL Migration Toolkit, mysqldump. Разницы нет.
Я не понимаю в чем проблема, поэтому очень нужен дельный совет.
Неактивен
Вот пример перемещения одной таблицы из БД провайдера к себе на localhost:
1) создание структуры
DROP TABLE IF EXISTS `myDB`.`myTab`;
CREATE TABLE `myDB`.`myTab` (
`id_g` TINYINT(3) NOT NULL AUTO_INCREMENT,
`name` TINYTEXT NOT NULL,
PRIMARY KEY (`id_g`)
)
ENGINE = INNODB
CHARACTER SET utf8 COLLATE utf8_general_ci;
2) перенос данных
INSERT INTO `myDB`.`myTab`(`id_g`, `name`)
VALUES (0, 'row1'),
(1, 'row2'),
(2, 'row3');
3) результат выполнения: Duplicate entry '1' for key 'PRIMARY'
4) содержимое таблицы после выполнения (в зависимости от махинаций) - либо пустые строки, либо:
1 row2
2 row3
3 row1
Кодировки баз на провайдере и на компе одинаковые, поддержка баз InnoDB есть.
Неактивен
Какие версии серверов, какой командой дампите данные, какой восстанавливаете?
Неактивен
На localhost сначало была MySQL 5.0.хx, думал проблемы в ней, переустановил на MySQL 5.1.32, без результата.
На сервере провайдера крутиться MySQL 5.0.32.
Данные переносил с помощью MySQL Migration Toolkit 1.1.17, потом для интереса вручную с помощью MySQLQueryBrowser 1.2.17 (команды привел выше). Ну а про mysqldump наврал, не пробовал, но сейчас попробую.
Неактивен
Вот чОрт... )))
На будущее, тем кто столкнулся с подобными проблемами делаем так:
1) заливаем данные к себе в файл с удаленного сервера
mysqldump --quick -u<логин> -p -h<хост> -P3306 <база> > database.sql
2) из файла переносим данные в свою БД на localhost
mysql -u<логин> -p -hlocalhost -P3306 -D <база> < database.sql
Детально не смотрел, но в первом приближении все перенеслось на пятерку.
Странно что MySQL Migration Toolkit не смог этого сделать....
Неактивен
теория http://www.openwiki.ru/wiki/MySQL_SQL
А кто-нибудь пробовал так (используется только одна команда):
MySQL manual reference
If you want to copy a database from a remote machine over a slow network, you can use these commands:
mysqldump -h 'other_hostname' --opt --compress db_name | mysql db_name
Настройки соединения тут упущены, они указываются аналогично предыдущим командам?
Отредактированно Vladimir777 (24.03.2009 18:46:31)
Неактивен
Угу, а можно еще и вот так
mysqldump -B dbname | gzip | ssh remotehost 'gunzip | mysql'
Неактивен