flo*_*eft 221 mysql mysql-error-2006
我在办公室运行服务器来处理一些文件并将结果报告给远程MySQL服务器.
文件处理需要一些时间,并且进程在中途死亡,并出现以下错误:
2006, MySQL server has gone away
Run Code Online (Sandbox Code Playgroud)
我听说过MySQL设置,wait_timeout,但我是否需要在我办公室或远程MySQL服务器的服务器上更改它?
Geo*_*rge 345
我已经多次遇到这种情况,我通常会发现答案是一个非常低的默认设置max_allowed_packet.
将其提升到/etc/my.cnf(低于[mysqld])8或16M通常可以修复它.(MySql 5.7中的默认值4194304是4MB.)
[mysqld]
max_allowed_packet=16M
Run Code Online (Sandbox Code Playgroud)
注意:这可以在服务器上运行时设置.
使用set global max_allowed_packet=104857600.这将其设置为100MB.
Sat*_*h D 41
我有同样的问题,但max_allowed_packet改变my.ini/my.cnf文件下[mysqld]的伎俩.
添加一行
max_allowed_packet的= 500M
现在,restart the MySQL service一旦你完成.
小智 33
我在MySQL命令行中使用了以下命令来恢复大小超过7GB的MySQL数据库,并且它可以工作.
set global max_allowed_packet=268435456;
Run Code Online (Sandbox Code Playgroud)
Yzm*_*rez 16
错误:2006(CR_SERVER_GONE_ERROR)
消息:MySQL服务器已经消失
通常,您可以重试连接,然后再次执行查询以解决此问题 - 在完全放弃之前尝试3-4次.
我假设您正在使用PDO.如果是这样,那么您将捕获PDO异常,递增计数器,然后如果计数器低于阈值则再次尝试.
如果您有一个导致超时的查询,您可以通过执行以下命令来设置此变量:
SET @@GLOBAL.wait_timeout=300;
SET @@LOCAL.wait_timeout=300; -- OR current session only
Run Code Online (Sandbox Code Playgroud)
其中300是您认为查询可以占用的最长时间的秒数.
编辑:您可能还想使用的其他两个设置是net_write_timeout和net_read_timeout.
uwe*_*uwe 16
在MAMP(非专业版)中我添加了
--max_allowed_packet=268435456
Run Code Online (Sandbox Code Playgroud)
至 ...\MAMP\bin\startMysql.sh
积分和更多细节在这里
joz*_*ozo 13
导致此错误的原因有多种。
wait_timeout - 服务器在关闭连接之前等待连接变为活动状态的时间(以秒为单位)。interactive_timeout - 服务器等待交互式连接的时间(以秒为单位)。max_allowed_packet- 数据包或生成/中间字符串的最大字节大小。设置为与最大 BLOB 一样大,为 1024 的倍数。my.cnf示例:
[mysqld]
# 8 hours
wait_timeout = 28800
# 8 hours
interactive_timeout = 28800
max_allowed_packet = 256M
Run Code Online (Sandbox Code Playgroud)
free -hCONN_MAX_AGE(见文档)SHOW VARIABLES LIKE '%time%';mysqladmin variableslog_warnings = 4log_error_verbosity = 3小智 10
由于wait_timeout到期,会发生此错误.
只需转到mysql服务器检查其wait_timeout:
mysql> SHOW VARIABLES LIKE'wait_timeout'
mysql> set global wait_timeout = 600#您需要的10分钟或最长等待时间
http://sggoyal.blogspot.in/2015/01/2006-mysql-server-has-gone-away.html
小智 10
如果您使用的是 xampp 服务器:
转到 xampp -> mysql -> bin -> my.ini
更改以下参数:
max_allowed_packet = 500M
innodb_log_file_size = 128M
这对我帮助很大:)
在Windows上,那些使用xampp的人应该使用这个路径xampp/mysql/bin/my.ini并将max_allowed_packet(在[mysqld]部分下)更改为你选择的大小.例如
max_allowed_packet=8M
Run Code Online (Sandbox Code Playgroud)
再次在php.ini(xampp/php/php.ini)上更改upload_max_filesize的选择大小.例如
upload_max_filesize=8M
Run Code Online (Sandbox Code Playgroud)
在我发现这个问题之前,让我头疼了一段时间.希望能帮助到你.
对我来说这是RAM问题。
即使在具有12个CPU内核和32 GB RAM的服务器上,我也遇到同样的问题。我进行了更多研究,并尝试释放RAM。这是我在Ubuntu 14.04上释放内存的命令:
sync && echo 3 | sudo tee /proc/sys/vm/drop_caches
Run Code Online (Sandbox Code Playgroud)
而且,它修复了所有问题。我已将其设置为cron以每小时运行一次。
crontab -e
0 * * * * bash /root/ram.sh;
Run Code Online (Sandbox Code Playgroud)
并且,您可以使用此命令来检查可用的可用RAM:
free -h
Run Code Online (Sandbox Code Playgroud)
并且,您将获得如下内容:
total used free shared buffers cached
Mem: 31G 12G 18G 59M 1.9G 973M
-/+ buffers/cache: 9.9G 21G
Swap: 8.0G 368M 7.6G
Run Code Online (Sandbox Code Playgroud)
在我的情况下,open_files_limit变量的值较低,这阻止了mysqld对数据文件的访问。
我检查了:
mysql> SHOW VARIABLES LIKE 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit | 1185 |
+------------------+-------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
在将变量更改为大值之后,我们的服务器又恢复了运行:
[mysqld]
open_files_limit = 100000
Run Code Online (Sandbox Code Playgroud)
小智 5
如果您使用的是64位WAMPSERVER,请搜索多次出现的max_allowed_packet,因为WAMP使用在[wampmysqld64]下设置的值,而不是在[mysqldump]下设置的值,这对我来说是个问题,我正在更新错误的值。将其设置为max_allowed_packet = 64M之类的东西。
希望这可以帮助其他Wampserver用户。
通常,这表明MySQL服务器连接问题或超时。一般可以通过改变来解决WAIT_TIMEOUT和max_allowed_packet的在my.cnf中或类似。
我建议这些值:
wait_timeout = 28800
max_allowed_packet = 8M
小智 5
MAMP 5.3,您将找不到 my.cnf 并且添加它们不起作用,因为 max_allowed_packet 存储在变量中。
一种解决方案可以是:
运行以下查询,它将 max_allowed_packet 设置为 7gb:
设置全局 max_allowed_packet=268435456;
对于某些人,您可能还需要增加以下值:
set global wait_timeout = 600;
set innodb_log_file_size =268435456;
Run Code Online (Sandbox Code Playgroud)