我正在尝试使用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秒的最长执行时间。
答案 0 :(得分:45)
phpMyAdmin目录中有一个配置变量,您可以在libraries\config.default.php
中找到一个名为$cfg['ExecTimeLimit']
的配置变量,您可以将其设置为所需的最长执行时间。
答案 1 :(得分:24)
好吧,要摆脱这个,你需要将phpMyadmin变量设置为0,这是无限的,或者你找到适合你需要的秒数。或者你总是可以使用CLI(命令行界面)甚至不会出现这样的错误(你想看看this link。
现在关于这里的错误,首先在安全方面确保您已正确设置PHP参数,以便您可以上传大文件并从此可以使用最长的执行时间。如果没有,请继续从php.ini文件
中设置三个参数完成后再回到找到名为“config.default.php”的phpMyadmin配置文件。在XAMPP上,您可以在“C:\ xampp \ phpMyAdmin \ libraries”文件夹下找到它。打开名为config.default.php
的文件并设置:
$cfg['ExecTimeLimit'] = 0;
设置完成后,重新启动MySQL和Apache并导入数据库。
享受...... :)。
答案 2 :(得分:5)
您正尝试通过网络界面导入庞大的数据集。
默认情况下,在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)等内容可能更适合运行导入作业
答案 3 :(得分:4)
这对我有用。
如果在DBIMysqli.class.php
文件中超过了最大执行时间300。在文本编辑器中打开以下文件
C:\xampp\phpMyAdmin\libraries\config.default.php
然后
搜索以下代码行:
$cfg[‘ExecTimeLimit’] = 300;
并将值300
更改为900
。
答案 4 :(得分:1)
是.sql文件还是压缩(.zip,.gz等)?压缩格式有时需要更多PHP资源,因此您可以在上传之前尝试解压缩它。
但是,您还可以尝试其他方法。如果您具有命令行访问权限,只需上传文件并使用命令行客户端mysql
导入(在mysql>
提示符后use databasename;
然后source file.sql
)。
否则你可以使用phpMyAdmin&#34; UploadDir&#34;功能将文件放在服务器上,并将其显示在phpMyAdmin中,而不必从本地计算机上传。
答案 5 :(得分:1)
您必须在别名配置php_admin_value max_execution_time
(\XAMPP\alias\phpmyadmin.conf)
答案在这里: WAMPServer phpMyadmin Maximum execution time of 360 seconds exceeded
答案 6 :(得分:1)
只需设置$ 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。
**注意-不要忘记重启服务器。
答案 7 :(得分:0)
尝试了许多没有成功的事情之后,我设法获得了对服务器的SSH访问权限,并使用命令行而不是phpMyAdmin导入了我的80Mb数据库。这是命令:
mysql -u root -p -D mydatabase -o < mydatabase.sql
导入大数据库要容易得多,如果在Windows上运行xammp, mysql.exe 的路径为C:\xampp\mysql\bin\mysql.exe
答案 8 :(得分:0)
$cfg[‘ExecTimeLimit’] = 0;
意味着无限执行。请注意,这不是一个“普通” ini文件。它是一个php脚本,因此您需要在该文件的开头打开<?php
。您在服务器上还有其他工具可以处理导入。
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
答案 9 :(得分:0)
仅从服务器的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;
设置完成后,重新启动服务器,然后再次导入数据库。
完成
答案 10 :(得分:0)
当我尝试了一些要点时,此错误的最佳解决方案。 请按照以下步骤解决此问题:
答案 11 :(得分:0)
1-在您的本地驱动器中进行搜索,然后键入“ php.ini” 2-您可能会看到许多名为php.ini的文件,您应该选择适合您的php版本的文件(请参阅localhost) 3-打开php.ini文件,在“ max_execution_time”上进行搜索,然后使其等于“ -1”以使其不受限制
答案 12 :(得分:0)
如果您使用的是 laragon
并且您的数据库是 phpMyAdmin,则处理此错误的过程是相同的。
php.ini
文件config.default.php
路径是 C:\laragon\etc\apps\phpMyAdmin\libraries\config.default.php
$cfg['ExecTimeLimit'] = 0;
我希望它能解决你在 laragon 环境下的问题? #Happy Coding :)
答案 13 :(得分:-2)
您可以增加限制:
ini_set('max_execution_time', 3000);
(请注意,此脚本也会导致高内存使用量,因此您可能还需要增加内存使用率)
其他可能的解决方案:将您的sql文件块化,并将其作为部分处理。我假设,它不是一个大的SQL查询,是吗?
更新:正如@Isaac所指出的,这是关于PHPMyAdmin的。在这种情况下,在php.ini中设置max_execution_timeout
。 (位置取决于您的环境)
答案 14 :(得分:-3)
以下内容可能会对您有所帮助:
ini_set('max_execution_time', 100000);
在你的mysql - max_allowed_packet=100M
中,在某些情况下查询太长,sql也会产生错误&#34; MySQL服务器已经消失了#34 ;;
将值更改为您需要的值。