我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
当前回答
对于Vagrant Box,请确保为该Box分配了足够的内存
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
end
其他回答
如果你知道你要离线一段时间,你可以关闭连接,进行处理,重新连接并撰写报告。
对于使用XAMPP的用户,在C:\ XAMPP \mysql\bin\my.ini中有2个max_allowed_packet参数。
我在Ubuntu桌面上的不同MySQL客户端软件中得到了2006年错误消息。原来我的JDBC驱动程序版本太旧了。
错误:2006 (CR_SERVER_GONE_ERROR)
消息:MySQL服务器已经消失了
通常,您可以重试连接,然后再次执行查询来解决这个问题-在完全放弃之前尝试3-4次。
我假设您正在使用PDO。如果是这样,那么您将捕获PDO异常,增加一个计数器,然后在计数器低于阈值时再次尝试。
如果你有一个导致超时的查询,你可以执行以下命令来设置这个变量:
SET @@GLOBAL.wait_timeout=300;
SET @@LOCAL.wait_timeout=300; -- OR current session only
其中300是您认为查询可能花费的最大时间的秒数。
关于如何处理Mysql连接问题的进一步信息。
编辑:您可能还想使用的另外两个设置是net_write_timeout和net_read_timeout。
我在MySQL命令行中使用了以下命令来恢复一个超过7GB的MySQL数据库,它是有效的。
set global max_allowed_packet=268435456;