我正在导入一个400MB(未压缩的)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.
Run Code Online (Sandbox Code Playgroud)
我相信该文件确实包含扩展插入,但我无法重新生成数据库,因为它已从旧服务器中删除.如何导入此数据库或将其转换为导入?
谢谢你的帮助.
最好的尼克
编辑: 似乎唯一可行的答案是分离扩展插入,但我仍然需要帮助找出如何拆分文件,如下面的答案所示.请帮忙.谢谢.
小智 34
您无需对.sql文件进行任何更改:只需在任何文本编辑器中打开bigdump.php,找到该行
define ('MAX_QUERY_LINES',300);
Run Code Online (Sandbox Code Playgroud)
并用你想要的任何东西替换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
Run Code Online (Sandbox Code Playgroud)
您只需<backup>.sql
在任何文本编辑器中打开文件即可完成此操作,它只是纯文本.有时备份可能是一个.gz
或一个.bz
文件,但它们只是拉链:如果你解压缩这些gzip压缩文件或bzip压缩文件,你最终会得到一个.sql
可以轻松编辑的文件.
在任意数量的行之后编写一个脚本来分割每个语句可能不会太难.基本程序逻辑可能如下所示:
但是,您可以手动执行此操作,然后确保所有将来的备份都不使用扩展插入.另外,phpMyAdmin允许您在创建导出时设置最大语句大小,因此它基本上会为您执行上述操作.
但是,你对内存限制做了什么可能是一个更容易的解决方案.对于处于类似情况且无法改变这些限制的其他任何人,请尝试上述方法.
小智 5
对我来说,它的工作方式如下:
搜索
$max_query_lines = 300;
Run Code Online (Sandbox Code Playgroud)
然后简单地替换为
$max_query_lines = 3000;
Run Code Online (Sandbox Code Playgroud)
在增加内存缓冲区并通过 SSH 进行普通 MySQL 导入后,我能够成功导入数据库。
我使用以下带有绝对路径的命令:
mysql -u <username> -p < /home/dir/dumpfile.sql
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
33938 次 |
最近记录: |