原因1. MySQL 服务宕了

判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长

$ mysql -uroot -p -e "show global status like 'uptime';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Uptime        | 68928 |
+---------------+-------+
1 row in set (0.04 sec)

或者查看MySQL的报错日志,看看有没有重启的信息

$ tail /var/log/mysql/error.log
130101 22:22:30 InnoDB: Initializing buffer pool, size = 256.0M
130101 22:22:30 InnoDB: Completed initialization of buffer pool
130101 22:22:30 InnoDB: highest supported file format is Barracuda.
130101 22:22:30 InnoDB: 1.1.8 started; log sequence number 63444325509
130101 22:22:30 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
130101 22:22:30 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
130101 22:22:30 [Note] Server socket created on IP: '127.0.0.1'.
130101 22:22:30 [Note] Event Scheduler: Loaded 0 events
130101 22:22:30 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.28-cll'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MySQL Community Server (GPL)

如果uptime数值很大,表明mysql服务运行了很久了。说明最近服务没有重启过。

如果日志没有相关信息,也表名mysql服务最近没有重启过,可以继续检查下面几项内容。

2. 连接超时

如果程序使用的是长连接,则这种情况的可能性会比较大。

即,某个长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。

此后再通过这个connection发起查询的时候,就会报错server has gone away

$ mysql -uroot -p -e "show global variables like '%timeout';"
+----------------------------+----------+
| Variable_name              | Value    |
+----------------------------+----------+
| connect_timeout            | 30       |
| delayed_insert_timeout     | 300      |
| innodb_lock_wait_timeout   | 50       |
| innodb_rollback_on_timeout | OFF      |
| interactive_timeout        | 28800    |
| lock_wait_timeout          | 31536000 |
| net_read_timeout           | 30       |
| net_write_timeout          | 60       |
| slave_net_timeout          | 3600     |
| wait_timeout               | 28800    |
+----------------------------+----------+
mysql> SET SESSION wait_timeout=5;## Wait 10 secondsmysql> SELECT NOW();
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    132361
Current database: *** NONE ***+---------------------+
| NOW()               |
+---------------------+
| 2013-01-02 11:31:15 |
+---------------------+
1 row in set (0.00 sec)

3. 进程在server端被主动kill

这种情况和情况2相似,只是发起者是DBA或者其他job。发现有长时间的慢查询执行kill xxx导致。

$ mysql -uroot -p -e "show global status like 'com_kill'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Com_kill      | 0     |
+---------------+-------+

4. Your SQL statement was too large.

当查询的结果集超过 max_allowed_packet 也会出现这样的报错。定位方法是打出相关报错的语句。

用select * into outfile 的方式导出到文件,查看文件大小是否超过 max_allowed_packet ,如果超过则需要调整参数,或者优化语句。

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
1 row in set (0.00 sec)

修改参数:

mysql> set global max_allowed_packet=1024*1024*16;
mysql> show global variables like 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.00 sec)

http://www.cnblogs.com/cenalulu/archive/2013/01/08/2850820.html

转载于:https://www.cnblogs.com/imsoft/p/5345039.html

MySQL server has gone away报错原因分析相关推荐

  1. MySQL server has gone away报错原因分析及解决办法

    原因1. MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长 $ mysql -uroot -p -e "show global status l ...

  2. MySQL Server has gone away报错原因汇总

    原因一: MySQL 服务宕了 判断是否属于这个原因的方法很简单,执行以下命令,查看mysql的运行时长: $ mysql -uroot -p -e "show global status ...

  3. mysql 长连接 has gone away_MySQL server has gone away报错原因分析/

    在平时和开发的交流 以及 在论坛回答问题的或称中会发现这个问题被问及的频率非常高. 程序中报错: MySQL server has gone away 是什么意思? 如何避免? 因此,感觉有必要总结一 ...

  4. mysql away_MySQL server has gone away报错原因分析

    在执行一个sql文件时mysql -h 127.0.0.1 -uroot study -e"source b.sql",报错MySQL server has gone away.上 ...

  5. CodeBlocks报错原因分析:找不到编译器 / th_en_US.idx' not found! 提示

    找不到编译器解决方法 新装了一个CodeBlocks,无法运行程序,报错如下: Project/Target: "ACM1 - Debug":The compiler's setu ...

  6. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法

    今天调用pandas读取csv文件时,突然报错" OSError: Initializing from file failed ",我是有点奇怪的,以前用的好好的,read_csv ...

  7. 【解决报错原因分析】画图plt.contourf(X,Y,Z)报错TypeError: unhashable type: ‘numpy.ndarray‘(含详细示例讲解)

    今天简化画图代码的时候发现了很奇怪的报错现象,经过一系列尝试找到了根源,希望帮助后来人,主要问题出现在如下语句中(为了体现问题.方便比对,特意在这改变了x为xx,如果你不想看这冗长的示例,可以直接按照 ...

  8. Mysql增加传输数据量或连接时间,防止mysql server has gone away报错

    首先登录进mysql: mysql -u root -p 这个需要修改数据库配置的权限 修改数据传输量 默认是1M的数据量,数据量过大时会不够用,因此增加阈值,如下代码为100M show varia ...

  9. g++编译报错原因分析 makefile : *** commands commence before first target. stop.

    在编译linux C++代码时出现了makefile :70: *** commands commence before first target. stop. 经过检查发现,原因是修改makefil ...

最新文章

  1. 【项目实战课】基于Pytorch的3DCNN视频分类与行为识别实战
  2. Unity 5 中的全局光照技术详解
  3. cout不明确什么意思_王源吸烟粉丝说不袒护,让他谨慎交友是什么意思?
  4. 64位Windows 7平台安装32位Timesten,配置ODBC数据源
  5. SpringBoot集成Redis分布式锁以及Redis缓存
  6. not是什么意思在c语言,为什么在C样式语言中逻辑NOT运算符是“!”而不是“ ~~”?...
  7. 在内网中使用maven_使用nexus搭建内网maven镜像
  8. matlab ss2ss,Zemax+DDE+toolbox+for+Matlab 该工具箱可实现matlab编程和zemax通信 - 下载 - 搜珍网...
  9. 外部方式启动AndroidStudio模拟器
  10. OSChina 周四乱弹 ——你想用小鱼干拐走本公主么
  11. 使用端到端深度学习模型完成PPI任务两篇论文笔记
  12. 易飞erp系统服务器怎么启动,如何使用易飞ERP系统
  13. Grid控件 设置格子背景颜色
  14. mysql 命令行操作
  15. 隐私黑产:2亿余条个人信息卖了2000余万元
  16. 【VSCode】【msys2】VS Code + msys2配置Windows下C/C++开发环境
  17. jQuery手风琴特效
  18. 每日一道leetcode(python)876. 链表的中间结点
  19. VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后.....报错解决
  20. Java面向对象三大特性详解

热门文章

  1. Scala实现冒泡排序、归并排序和快速排序
  2. AJAX JSON之讲解
  3. HDU-1358 Period KMP
  4. exit()和_exit()的区别
  5. 在线CSS代码压缩美化工具
  6. 为什么说车联网安全将成为热门产业
  7. Spring4-使用组件过滤器
  8. PHP 中 this,self,parent 的区别、用法
  9. 深入理解HTTPS及在iOS系统中适配HTTPS类型网络请求(上)
  10. mysqldump的一些用法