我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
我正在办公室运行一台服务器来处理一些文件,并将结果报告给远程MySQL服务器。
文件处理需要一段时间,进程中途死亡,并出现以下错误:
2006, MySQL server has gone away
我听说过MySQL的设置,wait_timeout,但是我需要在我办公室的服务器或远程MySQL服务器上更改它吗?
当前回答
在windows上,那些使用xampp的人应该使用这个路径xampp/mysql/bin/my.ini,并将max_allowed_packet(在部分[mysqld]下)更改为您选择的大小。 如
max_allowed_packet=8M
再次在php.ini(xampp/php/php.ini)中更改upload_max_filesize选项大小。 如
upload_max_filesize=8M
让我头疼了一段时间,直到我发现这个。希望能有所帮助。
其他回答
如果你知道你要离线一段时间,你可以关闭连接,进行处理,重新连接并撰写报告。
错误: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。
如果您正在使用64Bit WAMPSERVER,请搜索max_allowed_packet的多次出现,因为WAMP使用[wampmysqld64]下设置的值,而不是[mysqldump]下设置的值,这对我来说是问题,我更新了错误的一个。将其设置为max_allowed_packet = 64M。
希望这能帮助其他wampserver用户。
在我的情况下,它是低值的open_files_limit变量,这阻止了mysqld访问数据文件。
我用:
mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1185 |
+------------------+-------+
1 row in set (0.00 sec)
在我将变量改为大值后,我们的服务器再次活跃起来:
[mysqld]
open_files_limit = 100000
我在Ubuntu桌面上的不同MySQL客户端软件中得到了2006年错误消息。原来我的JDBC驱动程序版本太旧了。