我正在导入一个400MB(未压缩)的MySQL数据库。我正在使用BIGDUMP,并且我得到这个错误:
停在387号线。
当前查询在此处包含超过300个转储行。如果您的转储文件是由某些工具创建的,而该工具没有在每个查询的末尾放置分号和换行符,或者如果您的转储包含扩展插入,则可能发生这种情况。请阅读BigDump常见问题解答以了解更多信息。
我相信该文件确实包含扩展插入,但我无法重新生成数据库,因为它已从旧服务器中删除。如何导入此数据库或将其转换为要导入的数据库?
编辑
看来唯一可行的答案是分离扩展插入,但我仍然需要弄清楚如何分割文件,如下面的答案所示。
6条答案
按热度按时间js5cn81o1#
您不需要对.sql文件进行任何更改:只要在任何文本编辑器中打开bigdump.php,找到行
把300换成你想要的任何东西。
xsuvu9jc2#
只需编辑转储文件,以便在300次插入之后开始一条新语句:
您可以通过在任何文本编辑器中打开您的
<backup>.sql
文件来做到这一点,它只是纯文本。有时备份可能是.gz
或.bz
文件,但它们只是zip:如果解压缩这些gzip或bzip文件,最终将得到一个.sql
文件,您可以轻松编辑它。编写一个脚本将每个语句拆分为任意行数的语句可能并不太难。基本的程序逻辑可能如下所示:
1.查找以“INSERT”开头的行。
1.复制这一行,直到单词“VALUES”的末尾
1.单步执行以下所有行,边执行边计数。
1.如果你的计数器达到了300,那么在最后一行的末尾加上一个分号,然后粘贴前面的“INSERT ... VALUES”语句。将你的计数器重置为1,然后转到第3步。
1.如果你到达了一个以“INSERT”开头的行,重置计数器为1,然后转到第2步。
不过,你可以手动完成这一步,然后确保以后所有的备份都不使用扩展插入。此外,phpMyAdmin允许你在创建导出时设置最大语句大小,所以它基本上会为你完成上述操作。
不过,你对内存限制所做的可能是一个更简单的解决方案。对于其他处于类似情况无法更改这些限制的人,请尝试上面的方法。
aemubtdh3#
对我来说,它的工作原理如下:
搜索
然后简单地替换为
0lvr5msh4#
在增加内存缓冲区并通过SSH执行普通MySQL导入后,我能够成功导入数据库。
我使用以下命令和绝对路径:
qcuzuvrc5#
感谢您的'max_query_lines'和'INSERT'解决方案!
“这两种解决方案都有一些缺点。如果不使用扩展插入,输出转储将比使用扩展插入的转储大许多倍。增加max_query_lines将增加bigdump脚本的内存使用量,并且您的服务器可能会耗尽内存。”
来源:http://www.etctips.com/error-at-this-place-the-current-query-includes-more-than-xxx-dump-lines/
fhity93d6#
打开
bigdump.php
并更改以下行:改为: