当前位置: 首页 > news >正文

MySQL之MySQL server has gone away复现测试

测试MySQL server has gone away复现条件

  • 环境
  • 情形一
    • 报错信息
    • 复现测试
  • 情形二
    • 报错信息
    • 复现测试

环境

Python: 3.8/3.9
MySQL: 5.x

情形一

报错信息

  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 319, in _querydb.query(q)File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 259, in query_mysql.connection.query(self, query)
sqlalchemy.exc.OperationalError: (MySQLdb._exceptions.OperationalError) (2006, 'MySQL server has gone away')

复现测试

  1. 将MySQL中的wait_timeout调整为10s
  2. 将flask sqlalchemy中数据库连接配置的SQLALCHEMY_POOL_RECYCLE改为大于wait_timeout
  3. 启动服务,在一个session中运行多个查询(总时间大于10s即可)

复现原因分析: 在程序中创建的一个连接,某次查询请求使用的此数据库连接时间超出了wait_timeout配置,但是未超过SQLALCHEMY_POOL_RECYCLE,导致此连接仍可被应用程序使用,但是已被MySQL主动断开。

情形二

报错信息

MariaDB [(none)]>  show processlist;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id:    15
Current database: *** NONE ***

复现测试

  1. mysql中修改interactive_timeout为很小的值,比如10s
  2. 退出mysql交互模式,重新进入
  3. 等待10s执行任意命令

复现原因分析: 交互模式中使用的连接,已被数据库断开(并未通知此连接),但查询请求仍尝试使用此连接。

http://www.lryc.cn/news/417575.html

相关文章:

  • 编程深水区之并发④:Web多线程
  • 【实战指南】从提升AI知识库效果,从PDF转Markdown开始
  • Android 删除telephony的features
  • Linux驱动开发—编写第一个最简单的驱动模块
  • 科普文:微服务之Spring Cloud 组件API网关Gateway
  • Kubernetes中的CRI、CNI与CSI:深入理解云原生存储、网络与容器运行时
  • 【数据结构】二叉搜索树(Java + 链表实现)
  • java Brotli压缩算法实现压缩、解压缩
  • centos7.9 安装java相关组件
  • 在IntelliJ IDEA中,快速找到控制类(Controller类)中所有的方法,可以通过以下几种方式实现:
  • ChatGPT的强大之处:探究及与国内产品的对比
  • MySql审计平台
  • 深度学习6--深度神经网络
  • 有了Power BI还需要深入学习Excel图表制作吗?
  • WEB渗透Web突破篇-命令执行
  • 【MYSQL】表操作
  • 破解USB设备通讯协议实现自定义软件控制的步骤与方法
  • FFmpeg源码:av_init_packet、get_packet_defaults、av_packet_alloc函数分析
  • HarmonyOS应用开发知识地图
  • 了解反向代理如何工作吗?
  • ASCII码对照表
  • Git的一些简单使用
  • C++基础语法(下)
  • UKP3d创建斜管的操作
  • 【已解决】如何获取到DF数据里最新的调薪时间,就是薪资最高且时间最早?
  • PyQt5入门
  • 算法力扣刷题记录 六十九【动态规划基础及509. 斐波那契数】
  • 如何利用Python进行数据分析
  • 如何判断机器学习模型的好坏之LIME和SHAP
  • Android 是如何进行内存管理的