error: mysql server has gone away,MySQL server has gone away 的另一可能原因

在本地虚拟机 CentOS 7 系统中测试 MariaDB 服务器的时候,每次执行 mysql 指令总会遇到“ERROR 2006 (HY000): MySQL server has gone away”的错误。校准了虚拟机内时间后,前述问题小时。这两者之间是否有必然联系还不好说,暂作记录。

1. 问题

在 MariaDB 中随便执行一条指令,不管是 create database 也好,还是 flush privileges 也好,都会在显示指令执行结果前有类似这样的输出,

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id: 32

Current database: *** NONE ***

例如查询一下时间,

MariaDB [(none)]> select now();

ERROR 2006 (HY000): MySQL server has gone away

No connection. Trying to reconnect...

Connection id: 32

Current database: *** NONE ***

+---------------------+

| now() |

+---------------------+

| 2014-11-30 10:28:20 |

+---------------------+

1 row in set (0.02 sec)

可以看到,这条简单查询耗时 0.02 秒。而且其中 Connection id 后面的数字还会随着每次出现而增加 1。

关于这个问题,网上多数的探讨结果都发现是因为数据库运行参数 max_allowed_packet 的值过小造成的,只要相应调大该参数即可。典型的分析帖子可以参考 Ronald Bradford 博客和 stackoverflow。如果不曾在 /etc/my.cnf 中设置此值,则可以在数据库中查询到,

MariaDB [(none)]> show global variables like 'max_allowed_packet';

修改可以直接在数据库中执行,

MariaDB [(none)]> set global max_allowed_packet=1024*1024*16;

不明白为什么大家建议的值都是 16MB。但是既然这个参数只是规定了上限,并不是说就一定要占用这么内存,大点也无所谓。当然直接修改配置文件 /etc/my.cnf 也行,在 [mysqld] 下增加一个声明:

# vim /etc/my.cnf

[mysqld]

max_allowed_packet = 16M

但是显然,我这里的情况并不是因为这个最常见的问题。

2. 校准系统时钟

因为系统时间不准,就安装 ntp 校对了一下。

# yum -y -q install ntp

# ntpdate -s ntp.org

# date

Sat Dec 13 09:17:40 GMT 2014

3. 问题消失

然后紧接着就发现前面出现的问题消失。再次执行同一查询指令,

MariaDB [(none)]> select now();

+---------------------+

| now() |

+---------------------+

| 2014-12-13 09:19:08 |

+---------------------+

1 row in set (0.00 sec)

数据库失去连接的错误消失了。查询执行时间也不再那么长了。

不过这个问题和系统时钟不正常之间是否有关还真不知道。而且这也不是什么重要的事情,就没有再做进一步分析。这里暂作记录。如果有人遇到类似的情况还请留言讨论一下。©

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值