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_packet的= 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_timeout
和net_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_packet(在[mysqld]部分下)更改为您select的大小。 例如
max_allowed_packet=8M
再次在php.ini(xampp / php / php.ini)上更改upload_max_filesize的select大小。 例如
upload_max_filesize=8M
让我头痛一段时间,直到我发现这一点。 希望它有帮助。
我在DigitalOcean Ubuntu服务器上遇到了同样的错误。
我试图改变max_allowed_packet和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就是你必须检查两个文件
- config.inc.php文件
- 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';
确保在两个:
- config.inc.php文件
- 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_limit
variables,它阻止了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你的连接,做你的处理,重新连接和写你的报告。