当前位置: 首页 > 面试题库 >

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

洪和风
2023-03-14
问题内容

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

最近,在导入的最后,我们遇到了有关@old变量的错误,这些变量在更改原始设置(如外键约束)之前存储了这些设置(因此请关闭外键约束,以使导入不会在以下情况下引发错误)它会重新创建表,并在尚未创建表之一时尝试创建外键。我发现原因是产品表获取越来越多的数据,并且在导入过程中会话超时。

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


问题答案:

导入大型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 Dump导入程序

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

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

关于这个原本不错的选择的一个关键点是,它对包含扩展插入的MySQL导出完全不起作用。因此,如果您可以选择防止扩展插入,请尝试一下。否则,您将不得不使用另一种方法来导入大型MySQL文件。

使用MySQL控制台执行命令行

如果您正在运行WAMP(即使您不是在运行WAMP),则始终可以选择使用MySQL控制台进行追逐并导入大型MySQL数据库。在撰写本文时,我以这种方式导入4GB数据库。实际上,这就是为什么我要花一些时间写的原因,因为当您要导入4GB的SQL文件时,即使使用此方法也要花费时间!

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

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。



 类似资料:
  • 问题内容: 我正在将GWT与Hibernate,c3p0和MySQL结合使用,以产生一个受众有限的网络应用程序(每天最多50个用户)。在测试期间,我发现无论使用哪种方法,Hibernate都在打开每个会话的连接,但没有关闭它。 我当前的配置如下: 通过与应用程序的每个新连接,将创建一个新池。例如,如果我将池大小设置为3,则到应用程序的2个连接导致6个连接,直到应用程序关闭。 预期的行为是在每个事务

  • 问题内容: 我正在用MySQL建立一个网站。我将TOAD用于MySQL,突然出现错误,无法连接数据库: “太多联系” Toad for MySQL中有什么方法可以查看现有连接以杀死它们或简单地将所有连接全部关闭? 问题答案: 不, 没有内置的MySQL命令 。有多种工具和脚本支持它,您可以手动终止某些连接或重新启动服务器(但这会比较慢)。 使用查看所有连接,进程ID是你想杀死。 您可以编辑超时设置

  • 问题内容: 我是erlang的新手,我需要编写一些代码来在MySQL数据库中插入行。如何使用Erlang防止SQL注入?是否还有其他语言的预备陈述之类的东西,或者我应该怎么做? 多谢您的回覆。 问题答案: 该答案取决于您使用的驱动程序。 Erlang ODBC具有param_query函数,该函数将一组参数绑定到查询,并且还可能转义所有SQL特殊字符。 erlang-mysql-driver已经准

  • 我想使用连接到我的网络服务,发布一个XML并得到一个结果。我使用的是以下代码: 问题是,当我调用方法时,它失败了,说我“已经连接”。显然,实际上打开了与URL的连接(在我的调试器中,我可以看到布尔设置为)。但是根据Oracle的留档,它不应该这样做。Android文档对此并不清楚。 如何防止连接,以便设置额外属性? 更新它看起来好像在某个池中,没有断开连接,甚至在调用之后也没有断开连接,甚至没有杀

  • 问题内容: 编写python模块时,是否有办法防止客户端代码两次将其导入?就像c / c ++头文件一样: 非常感谢! 问题答案: Python模块不会多次导入。仅运行两次导入将不会重新加载模块。如果要重新加载它,则必须使用该语句。这是一个演示 是单行的模块 这是多次导入尝试的屏幕记录。

  • 小问题:如何使进口证书(pfx)不可出口? 是不支持这种场景还是我们缺少了什么?提前道谢!