MySQL错误2006年:MySQL服务器已经消失

我在我的办公室运行服务器来处理一些文件,并将结果报告给远程MySQL服务器。

文件处理需要一些时间,过程中途死亡,出现以下错误:

2006, MySQL server has gone away 

我听说过MySQL设置wait_timeout ,但是我需要在我的办公室或远程MySQL服务器上的服务器上更改吗?

如果需要,检查连接并重新build立它可能会更容易。

有关这方面的信息,请参阅PHP:mysqli_ping 。

我遇到过很多次,通常我发现答案是max_allowed_packet默认设置很低。 在/etc/my.cnf (在[mysqld] )将它提升到8或16M通常会修复它。

 [mysqld] max_allowed_packet=16M 

注意:这可以在服务器上设置,因为它正在运行。

使用set global max_allowed_packet=104857600 。 这将其设置为100MB。

我有同样的问题,但改变[mysqld]下的my.ini/my.cnf文件中的max_allowed_packet取得了诀窍。

添加一行

max_allowed_pa​​cket的= 500M

现在restart the MySQL service

我在MySQL命令行中使用了以下命令来恢复大小超过7GB的MySQL数据库,并且它可以正常工作。

 set global max_allowed_packet=268435456; 

在MAMP(非专业版)我补充说

 --max_allowed_packet=268435456 

...\MAMP\bin\startMysql.sh

积分和更多的细节在这里

错误:2006( CR_SERVER_GONE_ERROR )

消息:MySQL服务器已经消失

一般来说,你可以重试连接,然后再次进行查询来解决这个问题 – 尝试像3-4次完全放弃之前。

我假设你正在使用PDO。 如果是这样,那么你会赶上PDOexception,增加一个计数器,然后再次尝试,如果计数器是在一个门槛。

如果你有一个导致超时的查询,你可以通过执行下面的命令设置这个variables:

 SET @@GLOBAL.wait_timeout=300; SET @@LOCAL.wait_timeout=300; -- OR current session only 

其中300是您认为查询可能需要的最长时间的秒数。

有关如何处理Mysql连接问题的更多信息。

编辑:您可能还想使用其他两个设置是net_write_timeoutnet_read_timeout

由于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

在Windows上,那些使用xampp的人应该使用这个pathxampp / mysql / bin / my.ini并将max_allowed_pa​​cket(在[mysqld]部分下)更改为您select的大小。 例如

 max_allowed_packet=8M 

再次在php.ini(xampp / php / php.ini)上更改upload_max_filesize的select大小。 例如

 upload_max_filesize=8M 

让我头痛一段时间,直到我发现这一点。 希望它有帮助。

我在DigitalOcean Ubuntu服务器上遇到了同样的错误。

我试图改变max_allowed_pa​​cket和wait_timeout设置,但他们都没有修复它。

事实certificate,我的服务器是内存不足。 我添加了一个1GB的交换文件,并解决了我的问题。

free -h检查你的记忆,看看这是什么原因造成的。

对于Vagrant Box,请确保您分配足够的内存到框中

 config.vm.provider "virtualbox" do |vb| vb.memory = "4096" end 

这对我来说是内存问题。

即使在有12个CPU核心和32 GB RAM的服务器上,我也遇到了同样的问题。 我研究了更多,试图释放内存。 这里是我在Ubuntu 14.04上用来释放RAM的命令:

 sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 

而且,它修复了一切。 我已经把它设置在cron下,每小时运行一次。

 crontab -e 0 * * * * bash /root/ram.sh; 

而且,你可以使用这个命令来检查有多less可用的RAM空间:

 free -h 

而且,你会得到这样的东西:

  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 

我发现解决scheme“#2006 – MySQL服务器已经消失”这个错误。 解决scheme就是你必须检查两个文件

  1. config.inc.php文件
  2. config.sample.inc.php

这些文件在Windows中的path是

 C:\wamp64\apps\phpmyadmin4.6.4 

在这两个文件中的值是:

 $cfg['Servers'][$i]['host']must be 'localhost' . 

在我的情况是这样的:

 $cfg['Servers'][$i]['host'] = '127.0.0.1'; 

将其更改为:

 "$cfg['Servers'][$i]['host']" = 'localhost'; 

确保在两个:

  1. config.inc.php文件
  2. config.sample.inc.php文件,它必须是“localhost”。

最后一集:

 $cfg['Servers'][$i]['AllowNoPassword'] = true; 

然后重新启动Wampserver。


要更改phpmyadmin用户名和密码

您可以直接通过config.inc.php文件更改phpmyadmin的用户名和密码

这两条线

 $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] = ''; 

在这里你可以给新的用户名和密码。 更改后保存文件并重新启动WAMP服务器。

不太可能出现的情况是,客户端和服务器之间有一个防火墙,用于强制TCP重置到连接中。

我有这个问题,我发现我们的企业F5防火墙被configuration为终止闲置超过5分钟的非活动会话。

再次,这是不太可能的情况。

my.ini/my.cnf取消注释下面的ligne,这会将你的大文件分割成更小的部分

 # binary logging format - mixed recommended # binlog_format=mixed 

 # binary logging format - mixed recommended binlog_format=mixed 

在我的情况下,它是低值的open_files_limitvariables,它阻止了mysqld访问数据文件。

我检查了它:

 mysql> SHOW VARIABLES LIKE 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 1185 | +------------------+-------+ 1 row in set (0.00 sec) 

在我将variables改为大值之后,我们的服务器再次活着:

 [mysqld] open_files_limit = 100000 

我在Ubuntu桌面上的不同MySQL客户端软件中收到错误2006消息。 原来,我的JDBC驱动程序版本太旧了。

如果你知道你会离线一段时间,你可以closures你的连接,做你的处理,重新连接和写你的报告。