原因一: 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端的time out,被server强行关闭。此后再通过这个client发起查询的时候,就会报错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 second

smysql> 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)

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报错原因分析

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

  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. 地图相关应用系统部署到现场报错原因汇总

    文章目录 开发环境 问题现象 原因汇总 开发环境 1. 地图服务器:ArcGIS Server 10.3 2. 地图客户端: ArcGIS Destop 10.3 3. 数据库: Oracle 11g ...

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

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

  7. mysql unknown variable basedir_mysql登陆报错mysql: unknown variable 'basedir=

    mysql登陆报错mysql: unknown variable 'basedir= 发布时间:2020-08-10 13:01:16 来源:ITPUB博客 阅读:67 作者:feelpurple 使 ...

  8. 搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs(已解决)

    搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs 具体问题 ...

  9. MySQL报错原因:ERROR 1292 (22007): Incorrect date value: ‘1988‘ for column ‘birthday‘ at row 1

    想插入一条记录,里面包含日期记录,但是报错了. 报错原因:在插入date数据类型的值时,日期外面要加上引号. 报错代码: insert into db_student(name,age,sex,bir ...

最新文章

  1. LINUX UMASK详解
  2. 小波变换如何去噪的思想
  3. java文件拷贝时 buff给多大合适_Java复制文件
  4. 计算机基础及wps office应用_自考本科计算机应用基础考试大纲
  5. SQL Cookbook:二、查询结果排序(1)以指定的次序返回查询结果
  6. 15什么时候你最想打人
  7. Android Studio第一个NDK程序
  8. 下载安装谷歌浏览器插件
  9. 如何开启BBR算法优化ss
  10. 第五章 项目范围管理
  11. 第四章-2 hydra(九头蛇)与Medusa(美杜莎)
  12. 计算机网络教室财产登记表,固定资产清查登记表-资产管理.DOC
  13. Java8 jvm参数
  14. 计算机内存不足16g内存,win10 16g内存显示内存不足怎么办_win10 16g内存显示可用7.95g如何恢复...
  15. Tableau制作全球电影数据分析/全球超市利润混合地图
  16. Android使用SoundPool播放音效实例详解
  17. rand()函数和 srand()函数的用法
  18. 开源配置管理系统的选择和搭建
  19. [答学员问】对于低学历的我,想找一个培训机构学习Linux网络运维,哪个培训机构教学稍微好一点呢?
  20. Java编写程序实现计算租赁价

热门文章

  1. 数据库元数据数据字典查询_1_列出模式中所有的表
  2. android 实现定时通知,在Android中创建定时通知(例如,针对事件)
  3. 计算机信息系统安全保护条例最新,计算机信息系统安全保护条例.doc
  4. Fast R-CNN论文详解
  5. CentOS常用环境配置(MySQL、jdk、Redis、Nginx)
  6. 《js高程》 基本概念 上
  7. 阿里云Redis (安装包安装篇)
  8. 利用jquery的qrcode.js插件生成二维码的两种方式的使用
  9. [SOJ]连通性问题
  10. Debian 7.1.0 安装教程图解(——Debian系统轻量级快速安装法)