Ответ 1
Мне удалось успешно импортировать базу данных после увеличения буфера памяти и выполнения обычного импорта mysql через SSH.
Я использовал следующую команду с абсолютным путем:
mysql -u <username> -p < /home/dir/dumpfile.sql
Лучший Ник
Я импортирую 400-мегабайтную (несжатую) базу данных MySQL. Я использую BIGDUMP, и я получаю эту ошибку:
Stopped at the line 387.
At this place the current query includes more than 300 dump lines. That can happen if your dump file was created by some tool which doesn't place a semicolon followed by a linebreak at the end of each query, or if your dump contains extended inserts. Please read the BigDump FAQs for more infos.
Я считаю, что файл содержит Extended Inserts, однако у меня нет способа восстановить базу данных, поскольку она была удалена со старого сервера. Как импортировать эту базу данных или преобразовать ее для импорта?
Спасибо за любую помощь.
Лучший Ник
EDIT: Кажется, единственный жизнеспособный ответ заключается в том, чтобы отделить расширенные вставки, но мне все еще нужна помощь в определении того, как разделить файл в соответствии с приведенным ниже ответом. Пожалуйста помоги. Спасибо.
Мне удалось успешно импортировать базу данных после увеличения буфера памяти и выполнения обычного импорта mysql через SSH.
Я использовал следующую команду с абсолютным путем:
mysql -u <username> -p < /home/dir/dumpfile.sql
Лучший Ник
Вам не нужно вносить какие-либо изменения в файл .sql: просто откройте файл bigdump.php в любом текстовом редакторе, найдите строку
define ('MAX_QUERY_LINES',300);
и замените 300 на что угодно.
Просто отредактируйте файл дампа, чтобы после 300 вставок вы запустили новое утверждение:
INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES
(1, 'a', 'b'),
(2, 'c', 'd'),
(3, 'e', 'f'),
-- snip --
(300, 'w', 'x');
INSERT INTO `myTable` (`id`, `field1`, `field2`) VALUES
(301, 'y', 'z'),
(302, ... etc
Вы можете сделать это, просто открыв файл <backup>.sql
в любом текстовом редакторе, это просто текст. Иногда резервной копией может быть файл .gz
или .bz
, но они просто zips: если вы распаковываете эти gzipped или bzipped файлы, вы получите один файл .sql
, который вы можете легко редактировать.
Вероятно, было бы не слишком сложно написать script для разделения каждого оператора после произвольного количества строк. Основная логика программы будет выглядеть следующим образом:
Хотя вы можете просто сделать это вручную, а затем убедитесь, что все будущие резервные копии не используют расширенные вставки. Кроме того, phpMyAdmin позволяет вам устанавливать максимальный размер оператора при создании экспорта, поэтому он в основном сделает это для вас.
Хотя, то, что вы сделали с ограничением памяти, вероятно, намного проще. Для кого-либо еще в подобной ситуации, который не может изменить эти ограничения, попробуйте приведенное выше.
Для меня это работало следующим образом:
Поиск
$max_query_lines = 300;
то просто заменить на
$max_query_lines = 3000;
Спасибо за решения 'max_query_lines' и 'INSERT'!
"Оба решения имеют некоторые недостатки. Без расширенной вставки выходной дамп будет во много раз больше дампа с расширенными вставками. Увеличение max_query_lines увеличит использование памяти bigdump script, и ваш сервер может закончиться из памяти."
Источник: http://www.etctips.com/error-at-this-place-the-current-query-includes-more-than-xxx-dump-lines/
Старый вопрос, но я нашел его через интернет-поиск, и у него пока нет ответа, который я искал, поскольку он выглядит так, как phpMyAdmin переименовал параметр.
Чтобы отключить "расширенные вставки" в экспорте phpMyAdmin, вам необходимо установить параметр "Синтаксис для использования при вставке данных" в первый вариант:
include column names in every INSERT statement
Example: INSERT INTO tbl_name (col_A,col_B,col_C) VALUES (1,2,3)