Ess*_*xPN 33 php mysql sql xampp phpmyadmin
我试图在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
Run Code Online (Sandbox Code Playgroud)
这是xampp中php.ini的配置文件,由于某些原因我还是得到了
致命错误:在第285行的C:\ xampp\phpMyAdmin\libraries\dbi\DBIMysqli.class.php中超出了300秒的最大执行时间.
Ran*_*ell 47
在phpMyAdmin目录中有一个配置变量,您可以在libraries\config.default.php调用$cfg['ExecTimeLimit']中找到该变量,您可以将其设置为所需的最长执行时间.
Ume*_*til 27
好吧,要摆脱这个,你需要将phpMyadmin变量设置为0,这是无限的,或者你找到适合你需要的秒数.或者您可以始终使用CLI(命令行界面)甚至不会出现此类错误(您可以查看此链接.
现在关于这里的错误,首先在安全方面确保您已正确设置PHP参数,以便您可以上传大文件,并可以使用最终执行时间.如果没有,请继续从php.ini文件中设置三个参数,
完成后再回到找到名为"config.default.php"的phpMyadmin配置文件.在XAMPP上,您可以在"C:\ xampp\phpMyAdmin\libraries"文件夹下找到它.打开调用的文件config.default.php并设置:
$cfg['ExecTimeLimit'] = 0;
Run Code Online (Sandbox Code Playgroud)
设置完成后,重启MySQL和Apache并导入数据库.
请享用... :)
小智 12
从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;
Run Code Online (Sandbox Code Playgroud)
设置完成后,重新启动服务器并再次导入数据库。
完毕
您正尝试通过Web界面导入庞大的数据集.
默认情况下,在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
Run Code Online (Sandbox Code Playgroud)
或者,如果您对命令行工具不满意,那么SQLYog(适用于Windows),Sequel Pro(适用于Mac)等操作可能更适合运行导入作业
小智 5
这对我有用。如果您在DBIMysqli.class.php文件中超过了最大执行时间 300 。在文本编辑器中打开以下文件,
C:\xampp\phpMyAdmin\libraries\config.default.php然后搜索以下代码行:
$cfg[‘ExecTimeLimit’] = 300;
Run Code Online (Sandbox Code Playgroud)
并将值更改300为900.
mar*_*zar -2
您可以增加限制:
ini_set('max_execution_time', 3000);
Run Code Online (Sandbox Code Playgroud)
(请注意,此脚本也会导致高内存使用量,因此您可能还必须增加内存使用量)
其他可能的解决方案:对 sql 文件进行分块,并将其作为多个部分进行处理。我想,这不是一个大的 SQL 查询,不是吗?
更新:正如@Isaac 指出的,这是关于 PHPMyAdmin 的。在本例中max_execution_timeout在 php.ini 中设置。(位置取决于您的环境)