导入大型sql文件时,MySQL服务器已经消失
我试图通过phpMyAdmin导入一个大的sql文件...但它一直显示错误
'MySql服务器已经消失'
该怎么办?
如此处所述:
MySQL服务器的两个最常见原因(和修复)已经消失(错误2006):
服务器超时并关闭连接。 怎么修:
检查你的mysqld的my.cnf配置文件中的wait_timeout变量是否足够大。 在Debian上: sudo nano /etc/mysql/my.cnf
,设置wait_timeout = 600
秒(当错误2006消失时你可以调整/减少这个值),然后sudo /etc/init.d/mysql restart
。 我没有检查,但wait_timeout的默认值可能在28800秒左右(8小时)。
服务器丢弃了不正确或太大的数据包。 如果mysqld获得的数据包太大或不正确,它会假定客户端出现问题并关闭连接。 您可以通过增加my.cnf文件中的max_allowed_packet的值来增加最大数据包大小限制。 在Debian上: sudo nano /etc/mysql/my.cnf
,设置max_allowed_packet = 64M
(当错误2006消失时你可以调整/减少这个值),然后sudo /etc/init.d/mysql restart
。
编辑:注意,MySQL选项文件没有可用的命令作为注释(例如在php.ini中)。 因此,您必须在my.cnf
或my.ini
输入任何更改/调整,然后将它们放置在mysql/data
目录或任何其他路径中,在适当的选项组下,例如[client]
, [myslqd]
...例如:
[mysqld]
wait_timeout = 600
max_allowed_packet = 64M
然后重新启动服务器。 要获取它们的值,请输入控制台:
select @@wait_timeout;
select @@max_allowed_packet;
对我来说,这个解决方案并没有解决,所以我执行了
SET GLOBAL max_allowed_packet=1073741824;
在我的SQL客户端。
如果无法在运行MYSQL服务的情况下进行更改,则应停止服务并更改“my.ini”文件中的变量。
例如:
max_allowed_packet=20M
如果你使用默认值运行,那么你有很多空间来优化你的mysql配置。
我建议的第一步是将max_allowed_packet增加到128M。
然后下载MySQL Tuning Primer脚本并运行它。 它将为您的配置的几个方面提供建议以获得更好的性能。
同时考虑在MySQL和PHP中调整超时值。
您要导入的文件有多大(文件大小),并且您能够使用mysql命令行客户端而不是PHPMyAdmin导入文件?
链接地址: http://www.djcxy.com/p/30353.html上一篇: MySQL Server has gone away when importing large sql file