20

在开发过程中,我们的本地 WAMP 服务器如何从测试服务器获取最新数据是生成数据库转储,然后我们使用 source 命令上传该转储以加载 .sql 文件。

最近,在导入的最后,我们收到了关于 @old 变量的错误,这些变量在更改之前存储了诸如外键约束之类的原始设置(因此关闭外键约束,以便导入时不会抛出错误)当其中一个表尚未创建时,它会重新创建表并尝试创建外键)。我已经弄清楚原因是产品表正在获取越来越多的数据,并且在导入期间会话已超时。

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

4

3 回答 3

41

导入大型 MySQL 数据库的策略

PHPMyAdmin 导入

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

max_allowed_packet
read_buffer_size

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

max_execution_time
max_input_time
memory_limit

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

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

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

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

使用 MySQL 控制台转到命令行

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

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

use `db_name`

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

mysql-> use my_great_database;

mysql-> source sql_import_file.sql

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

mysql-> source C:\sql\my_import.sql;

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

MySQL 命令行的更多文档可以在这里找到:http: //dev.mysql.com/doc/refman/5.5/en/mysql.html

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

于 2013-07-05T05:44:35.323 回答
8

这个解决方案对我有用:

max_allowed_packet  <-- --> upped size to 8M
read_buffer_size  <-- -->  upped from 256 to 512

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

(四天的头撞,我终于把它修好了!)

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

于 2015-11-27T16:52:06.697 回答
5

考虑使用MySQL Workbench,它是免费的并且可以很好地处理非常大的脚本(从菜单中选择:文件->打开 SQL 脚本- 如果它很大,它会询问您是否要运行它)。多年来在处理大型 SQL 转储时为我提供了很好的帮助。

于 2016-06-19T13:38:45.370 回答