如何防止大型MySQL导入的连接超时

Mem*_*r-X 20 mysql timeout

在开发期间,我们的本地WAMP服务器如何从测试服务器获取最新数据是进行数据库转储,我们使用source命令上载该转储以加载.sql文件.

最近,在导入的最后,我们一直在获取有关@old变量的错误,这些变量在更改之前存储原始设置(如外键约束)(因此关闭外键约束,以便导入时不会抛出错误它重新创建表并尝试在尚未创建其中一个表时创建外键.我已经知道原因是产品表获得了越来越多的数据,并且在导入过程中会话已经超时.

我想知道我可以设置什么设置(作为my.ini文件中的SQL查询的一部分)将停止所有超时,实际上在我们登录时使会话永久持续.

Chr*_*ark 37

导入大型MySQL数据库的策略

PHPMyAdmin导入

如果您正在阅读此内容,则可能是PHPMyAdmin不适合您的大型MySQL数据库导入.尽管如此,总是值得一试,对吧?PHPMyAdmin导入失败的最常见原因是超出了导入限制.如果您在本地工作或拥有自己的服务器,可以尝试更改通常位于MySQL安装文件夹中的my.ini文件中的MySQL ini设置.如果您在Windows上使用WAMP,则可以使用MySQL> my.ini下的WAMP控制面板访问该文件.请记住重新启动WAMP,以便使用新设置.您可能希望在此处增加的设置包括:

max_allowed_packet
read_buffer_size
Run Code Online (Sandbox Code Playgroud)

即使使用增强的MySQL导入设置,您仍可能因PHP设置而导致导入超时.如果您可以访问PHP.ini,则可以编辑最大执行时间和相关设置.在WAMP中,访问PHP> php.ini的WAMP控制面板下的PHP.ini文件.在尝试大型MySQL导入时,请考虑提高以下设置的限制:

max_execution_time
max_input_time
memory_limit
Run Code Online (Sandbox Code Playgroud)

使用Big Dump交错的MySQL转储导入器

如果基本的PHPMyAdmin导入不起作用,您可能需要尝试从Ozerov.de获取交错的MySQL导入的Big Dump脚本.这个有用的脚本所做的是在较小的块中运行导入,这正是成功导入大型MySQL转储所需的.可从http://www.ozerov.de/bigdump/免费下载.

使用Big Dump的过程非常简单:您基本上将SQL导入文件和Big Dump脚本放在服务器上,在Big Dump脚本中设置一些配置,然后运行脚本.大转储处理其余的!

关于这个非常好的选择的一个关键点是它在包含扩展插入的MySQL导出上根本不起作用.因此,如果您可以选择阻止扩展插入,请尝试它.否则,您将不得不使用另一种方法来导入大型MySQL文件.

使用MySQL控制台转到命令行

如果您正在运行WAMP(即使您不是),也总是可以选择切换到追逐并使用MySQL控制台导入大型MySQL数据库.我在撰写这篇文章的时候正以这种方式导入一个4GB的数据库.这实际上是我有时间花在写作上的原因,因为即使这种方法需要时间来导入4GB的SQL文件!

一些开发人员(通常是我)通过打开黑屏并在其中键入神秘命令来进行恐吓.但它可以解放,当谈到MySQL数据库时,它通常是最好的选择.在WAMP中,我们从MySQL> MySQL Console的WAMP控制面板访问MySQL控制台.现在让我们学习导入MySQL数据库所需的2个简单的MySQL控制台命令,命令行样式:

use `db_name`
Run Code Online (Sandbox Code Playgroud)

命令use后跟数据库名称将告诉MySQL控制台您要使用哪个数据库.如果您已经设置了要导入的数据库,那么首先发出use命令.假设您的数据库已命名my_great_database.在这种情况下,请在MySQL控制台中发出以下命令.请注意,命令必须以分号结尾.

mysql-> use my_great_database;

mysql-> source sql_import_file.sql
Run Code Online (Sandbox Code Playgroud)

命令source后跟SQL文件的位置将SQL文件导入到先前使用该use命令指定的数据库.您必须提供路径,因此如果您在本地服务器上使用WAMP,请首先将SQL文件放在易于获取的位置,例如C:\ sql\my_import.sql.具有此示例路径的完整命令将是:

mysql-> source C:\sql\my_import.sql;
Run Code Online (Sandbox Code Playgroud)

运行该命令后,应开始导入SQL文件.在关闭MySQL控制台之前,让查询运行并允许导入完成.

有关MySQL命令行的更多文档,请访问:http://dev.mysql.com/doc/refman/5.5/en/mysql.html.

另一种解决方案是使用MySQL Workbench.


小智 7

此解决方案为我工作:

max_allowed_packet  <-- --> upped size to 8M
read_buffer_size  <-- -->  upped from 256 to 512
Run Code Online (Sandbox Code Playgroud)

在本地主机上使用Xampp控制面板。在MySQL配置中对my.ini文件进行更改后,不要忘记退出Xampp(或Wamp)并重新启动它以使更改生效。

(四天的头部撞击,我终于解决了!)

导入时出现症状:#2006 MySql服务器消失了。但是,在87个表行中,只有10个表行被导入。


Han*_*que 5

考虑使用MySQL Workbench,它是免费的,并且可以很好地处理非常大的脚本(从菜单中选择:File- > Open SQL Script-如果很大,它将询问您是否要运行它)。这些年来,在处理大型SQL转储时一直为我服务。