MySQL server has gone away的问题解决

 更新时间:2024年07月21日 10:38:59   作者:半桶水专家  
本文主要介绍了MySQL server has gone away的问题解决,意思就是指client和MySQL server之间的链接断开了,下面就来介绍一下几种原因及其解决方法,感兴趣的可以了解一下

一、可能是mysql连接超时

原因:mysql长连接时,很长时间没有新的请求发起到达服务端,当这个时间超过配置的最大超时时间时,mysql就会强行关闭链接。此后再通过这个connection发起查询的时候,就会报错server has gone away。

解决办法:可以将timeout时间设置长一点:

set global wait_timeout =3600 ; //非交互式链接

set global interactive_timeout=3600 ; //交互式链接

但是这样会长时间占用mysql链接,消耗资源。

二、可能是发送的SQL语句太长

原因:mysql服务器端和客户端在一次传送数据包的过程中,数据包的大小大于max_allowed_packet设置的值。

解决办法:可以将max_allowed_packet值设置大一点,set global max_allowed_packet=3600。

三、可能MySQL 服务宕了

可以查看mysql的运行时长:show global status like 'uptime'; 。来判断是否属于这个原因引起的。

uptime很长说明mysql运行很长时间了,排除mysql服务宕机的可能。

扩展:

应用程序长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 

解决MySQL server has gone away :

1、应用程序长时间的执行批量的MYSQL语句。最常见的就是采集或者新旧数据转化。或者长时间闲置数据库连接

解决方案: 

在my.cnf/my.ini文件中添加或者修改以下两个变量:

wait_timeout=2880000 
interactive_timeout = 2880000 

如果不能修改my.cnf/my.ini,则可以在连接数据库的时候设置CLIENT_INTERACTIVE,比如:

sql = "set interactive_timeout=24*3600"; 
mysql_real_query(...) 

2、执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理 

解决方案: 

在my.cnf/my.ini文件中添加或者修改以下变量:

max_allowed_packet = 10M(也可以设置自己需要的大小) 

max_allowed_packet 参数的作用是,用来控制其通信缓冲区的最大长度。

到此这篇关于MySQL server has gone away的问题解决的文章就介绍到这了,更多相关MySQL server has gone away内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 5.7.16 安装配置方法图文教程

    mysql 5.7.16 安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.16winx64安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-10-10
  • MySQL分组的时候遇到ONLY_FULL_GROUP_BY报错问题及解决方案

    MySQL分组的时候遇到ONLY_FULL_GROUP_BY报错问题及解决方案

    这篇文章主要介绍了MySQL分组的时候遇到ONLY_FULL_GROUP_BY报错问题及解决方案,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • MySQL 数据库的约束及数据表的设计原理

    MySQL 数据库的约束及数据表的设计原理

    这篇文章主要介绍了MySQL 数据库的约束及数据表的设计原理,数据库中的约束即是对插入数据库中的数据进行限定,为了保证数据的有效性和完整性,下面一起来了解具体的详细内容,需要的小伙伴可以参考一下
    2021-12-12
  • MySQL查看版本的五种方法总结

    MySQL查看版本的五种方法总结

    在日常项目开发过程中,我们经常要连接自己的数据库,此时不知道数据库的版本是万万不可的,下面这篇文章主要给大家介绍了关于MySQL查看版本的五种方法,需要的朋友可以参考下
    2023-02-02
  • mysql 主从服务器的简单配置

    mysql 主从服务器的简单配置

    首先呢,需要有两个mysql服务器。如果做测试的话可以在同一台机器上装两个mysql服务程序,注意要两个运行程序的端口不能一样。我用的是一个是默认的3306,从服务器用的是3307端口。
    2009-05-05
  • 线上MySQL的自增id用尽怎么办

    线上MySQL的自增id用尽怎么办

    MySQL的自增id都定义了初始值,然后不断加步长。虽然自然数没有上限,但定义了表示这个数的字节长度,那自增id用完,会怎么样?本文就来介绍一下
    2021-08-08
  • MySQL 索引知识汇总

    MySQL 索引知识汇总

    这篇文章主要介绍了MySQL 索引使用方法的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Mysql触发器在PHP项目中用来做信息备份、恢复和清空

    Mysql触发器在PHP项目中用来做信息备份、恢复和清空

    这篇文章主要介绍了Mysql触发器在PHP项目中用来做信息备份、恢复和清空的相关资料,需要的朋友可以参考下
    2017-11-11
  • mysql修改数据库引擎的几种方法总结

    mysql修改数据库引擎的几种方法总结

    这篇文章主要给大家介绍了关于mysql修改数据库引擎的相关资料,包括使用ALTERTABLE语句、更改默认存储引擎、使用MySQLWorkbench、导出和导入数据以及编写脚本批量修改,每种方法都有其优缺点和适用场景,需要的朋友可以参考下
    2024-11-11
  • Mysql快速插入千万条数据的实战教程

    Mysql快速插入千万条数据的实战教程

    这篇文章主要给大家介绍了关于Mysql快速插入千万条数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03

最新评论