PHP:导入.SQL数据文件时的最大执行时间

2020/12/24 07:21 · php ·  · 0评论

我正在尝试在XAMPP中使用phpMyAdmin导入大型.sql数据文件。但是,这要花很多时间,而且我不断得到:

致命错误:第285行的C:\ xampp \ phpMyAdmin \ libraries \ dbi \ DBIMysqli.class.php中超过了300秒的最大执行时间

该文件长约120万行。

该文件大约30MB,所以不是很大。我真的不明白为什么要花这么长时间。

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time=30000

; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time=60

; Maximum input variable nesting level
; http://php.net/max-input-nesting-level
;max_input_nesting_level = 64

; How many GET/POST/COOKIE input variables may be accepted
; max_input_vars = 1000

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
memory_limit=200M

这是xampp中php.ini的配置文件,出于某种原因我仍然得到

致命错误:第285行的C:\ xampp \ phpMyAdmin \ libraries \ dbi \ DBIMysqli.class.php中超过了300秒的最大执行时间。

有phpMyAdmin的目录,你可以在找到内的配置变量libraries\config.default.php$cfg['ExecTimeLimit'],你可以设置任何你需要的最长执行时间。

好了,要摆脱这一点,您需要将phpMyadmin变量设置为0(无限制)或以秒为单位的任意值(适合您的需求)。或者,您始终可以使用CLI(命令行界面)甚至都不会出现此类错误(您可以查看此链接)

现在,关于错误,首先安全起见,请确保已正确设置PHP参数,以便可以上传大文件并从此开始使用最大执行时间。如果没有,请继续并在php.ini文件中设置以下三个参数,

  1. max_execution_time = 3000000(根据您的要求设置)
  2. post_max_size = 4096M
  3. upload_max_filesize = 4096M

完成后,返回找到名为“ config.default.php”的phpMyadmin配置文件。在XAMPP上,您可以在“ C:\ xampp \ phpMyAdmin \ libraries”文件夹下找到它。打开名为的文件config.default.php并设置:

$cfg['ExecTimeLimit'] = 0;

设置完成后,重新启动MySQL和Apache,然后导入数据库。

请享用... :)

您正在尝试通过网络界面导入庞大的数据集。

默认情况下,在Web服务器的上下文中运行的PHP脚本具有最大执行时间限制,因为您不希望单个错误的PHP脚本占用整个服务器并导致拒绝服务。

因此,您的导入失败。PHPMyAdmin是一个Web应用程序,正在达到PHP施加的限制。

您可以尝试提高该限制,但是存在该限制是有充分理由的,因此不建议这样做。在Web服务器中运行将花费很长时间才能执行的脚本是一个非常糟糕的主意。

PHPMyAdmin并非真正适用于此类重型任务,而是用于日常家政任务和故障排除。

最好的选择是使用适合该工作的工具,例如mysql命令行工具。假设您的文件是一个SQL转储,那么您可以尝试从命令行运行以下命令:

mysql -u(your user name here) -p(your password here) -h(your sql server name here) (db name here) < /path/to/your/sql/dump.sql

或者,如果您对命令行工具不满意,则SQLYog(对于Windows),Sequel Pro(对于Mac)等工具可能更适合于运行导入作业

php.ini服务器文件中仅设置3个参数

A. max_execution_time = 3000000(根据您的要求设置)

B. post_max_size = 4096M


C. upload_max_filesize = 4096M

编辑C:\xampp\phpMyAdmin\libraries\config.default.php页面

$cfg['ExecTimeLimit'] = 0;

完成所有设置后,重新启动服务器,然后再次导入数据库。

完成了

这对我有用。如果您在DBIMysqli.class.php文件中获得了“最大执行时间300” 在文本编辑器中打开以下文件,
C:\xampp\phpMyAdmin\libraries\config.default.php然后搜索以下代码行:

$cfg[‘ExecTimeLimit’] = 300;

并将值更改300900

https://surya2in1.wordpress.com/2015/07/28/fatal-error-maximum-execution-time-of-300-seconds-exceeded/

只需设置$ cfg ['ExecTimeLimit'] = 0; 在xampp / phpMyAdmin / libraries / config.default.php中。

最大执行时间(以秒为单位)(0为无限制)。

php.ini根据文件大小文件中进行以下更改

post_max_size = 600M 
upload_max_filesize = 500M 
max_execution_time = 5000 
max_input_time = 5000 
memory_limit = 600M

但是请确保“ post_max_size”和“ memory_limit”应大于upload_max_filesize。

**注意-不要忘记重启服务器。

它是.sql文件还是已压缩(.zip,.gz等)?压缩格式有时需要更多的PHP资源,因此您可以在上传之前尝试对其进行解压缩。

但是,您也可以尝试其他方法。如果您有命令行访问,只需上传文件并导入与命令行客户端mysql(一次在mysql>提示符下,use databasename;然后source file.sql)。

否则,您可以使用phpMyAdmin的“ UploadDir”功能将文件放置在服务器上,并使其出现在phpMyAdmin中,而不必同时从本地计算机上载该文件。

此链接对使用UploadDir信息,并且这其中有一些更多的技巧和方法。

您必须php_admin_value max_execution_time在别名配置中进行更改(\XAMPP\alias\phpmyadmin.conf)

答案在这里:
WAMPServer phpMyadmin超过360秒的最大执行时间

在尝试了许多失败之后,我设法通过SSH访问服务器,并使用命令行而不是phpMyAdmin导入了80Mb数据库。这是命令:

mysql -u root -p -D mydatabase -o < mydatabase.sql

这是很容易导入大型数据库,如果你在Windows上运行XAMMP,用于路径的mysql.exeC:\xampp\mysql\bin\mysql.exe

1-在本地驱动器中进行搜索,然后键入“ php.ini” 2-您可能会看到许多名为php.ini的文件,您应该选择一个与您的php版本相匹配的文件(请参见localhost)3-打开php.ini文件搜索“ max_execution_time”,然后使其等于“ -1”以使其不受限制

  1. 永远不要更改原始的config.default.php文件。
  2. 更改php.ini中的常规执行时间对phpmyadmin脚本没有影响。
  3. 请改用/ phpMyAdmin文件夹中提供的新config.inc.php或config.sample.inc.php。
  4. 您可以$cfg[‘ExecTimeLimit’] = 0;按照上面的建议在config.inc.php中设置无休止的执行。请注意,这不是一个“普通” ini文件。它是一个php脚本,因此您需要<?php在该文件的开头打开一个
  5. 但最重要的是:根本不要使用此过程!phpmyadmin适用于小型数据库,但不适用于具有数MB或GB的大型数据库。

您在服务器上还有其他工具可以处理导入。

a)如果您有Plesk之类的服务器管理系统,请使用那里的数据库导入工具。

b)使用ssh命令进行数据库转储或通过ssh直接在mysql中写入数据库。下面的命令。

创建数据库转储:

mysqldump DBname --add-drop-table -h DBhostname -u DBusername -pPASSWORD > databasefile.sql

将数据库写入mysql:

mysql -h rdbms -u DBusername -pPASSWORD DBname < databasefile.sql

当我尝试了一些要点时,此错误的最佳解决方案。请按照以下步骤解决此问题:

  1. 找到文件[XAMPP安装目录] \ php \ php.ini(例如C:\ xampp \ php \ php.ini)
  2. 在记事本或任何文本编辑器中打开php.ini
  3. 找到包含max_execution_time的行,并
  4. 将值从30增加到更大的数字(例如,设置:max_execution_time = 90)
  5. 然后从XAMPP控制面板重新启动Apache Web服务器

您可以增加限制:

ini_set('max_execution_time', 3000);

(请注意,此脚本也可能导致较高的内存使用率,因此您可能还必须增加内存使用率)

其他可能的解决方案:分割您的sql文件,并将其作为部分进行处理。我认为这不是一个大的SQL查询,对吗?

更新:正如@Isaac所指出的,这与PHPMyAdmin有关。在这种情况下,请max_execution_timeout在php.ini中设置(位置取决于您的环境)

以下内容可能对您有帮助:

ini_set('max_execution_time', 100000);

在您的mysql中-max_allowed_packet=100M在某些情况下,查询时间过长,sql也会产生错误“ MySQL服务器已消失”;

将值更改为所需的值。

本文地址:http://php.askforanswer.com/phpdaoru-sqlshujuwenjianshidezuidazhixingshijian.html
文章标签: ,   ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!