Проблема с переносом (копированием) базы

Crys

Двинутый новичок
Проблема с переносом (копированием) базы

Делаю по мануалу (естественно вбивая данные):
Код:
mysqldump --opt database | mysql --host=remote-host -C database
В результате - Duplicate entry '' for key '...'
Единственная строка, которая вставляется в таблицу - с пустыми данными в текстовых полях. Поэтому и Duplicate entry...

Делаю
mysqldump ... > dump.sql

Получаю дамп. Кодировка файла utf8. Кодировки таблиц - utf8, сравнение - utf8_unicode_ci
Для некоторых таблиц указана кодировка cp1251, но в них нет текстовых данных (только числа и даты)

Затем
mysql < dump.sql - опять ошибка. В принципе, что и следовало ожидать, т.к. по сути сделано тоже самое, что и одной первоначальной командой.

Если делать экспорт через phpMyAdmin - получаем по сути такой же дамп. Если импортировать через phpMyAdmin дампы - получается всё хорошо. Проверялось на тестовых данных. Реальная база намного больше (полгига) и через phpMyAdmin не осилить.

Вопрос - как правильно импортировать созданный дамп через консоль?
 

vovanium

Новичок
Какая версия mysqldump? Также можно дампером попробовать, им базы больше двух гиг перебрасывали. Только и бэкапить и восстанавливать нужно дампером. Т.к. он автоматом переключает кодировки соединения для каждой таблицы, поэтому спокойно относится к дампом со смешанными кодировками.
 

Crys

Двинутый новичок
mysqldump Ver 10.11 Distrib 5.0.44, for pc-linux-gnu (i686)

Дампер не помог. Сломался при восстановлении:
===
2009.10.09 18:15:47
Возникла ошибка!
Неправильный запрос.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(16, 1, 82, NULL, 1, NULL, NULL, NULL, '', '', '2009-03-11 17:28:51'' at line 1 (256)
===

-~{}~ 09.10.09 19:07:

Все, решил проблему "в лоб". Попросил сделать это службу поддержки :)
 

vovanium

Новичок
mysqldump обновить, 10.11 криво с кодировками работает.
Насчет дампера весьма странно, дамп делался им же?
Бывает небольшой глючок с парсером попробуй в строке
PHP:
return fread($fp, 4096);
4096 заменить на 16000, аналогично в двух соседних строках, если бэкап делаешь со сжатием.
 
Сверху