MySQL之MySQL server has gone away原因分析以及解决方案

MySQL server has gone away原因分析&解决方案

环境

Python: 3.8/3.9

MySQL: 5.x

情形一

Python sqlalchemy连接池配置中的连接回收时间 SQLALCHEMY_POOL_RECYCLE 大于MySQL配置中的 wait_timeout。

解决方案

  1. 修改MySQL配置中的 wait_timeout
  2. 修改Python数据库连接池中的连接回收时间,如SQLALCHEMY_POOL_RECYCLE

查看MySQL配置

sql 复制代码
show global variables like '%wait_timeout';

更改MySQL配置

注意:

  1. 单位是秒(s)
  2. 默认是28800(即8小时)
  3. 使用global方式更改全局变量,对于已创建的连接会话不生效(比如当前交互的会话)
sql 复制代码
set global wait_timeout=28800;

或者:修改MySQL配置,重启MySQL服务(在mysqld下添加/修改)

复制代码
[mysqld]
wait_timeout = 28800

情形二

数据库连接发送的包数据太大,超过了数据库 max_allowed_packet 配置

查看MySQL配置

sql 复制代码
show global variables like '%max_allowed_packet';

更改MySQL配置

注意:

  1. 单位是字节(Byte)
  2. 默认是4194304(即4MB)
sql 复制代码
# 调整为16MB
set global max_allowed_packet=16*1024*1024;

或者:修改MySQL配置,重启MySQL服务(在mysqld下添加/修改)

复制代码
[mysqld]
max_allowed_packet = 256M

|------------------------------------|
| 欢 迎 客 官 在 评 论 区 分 享 您 的 解 决 方 案 ~ |

相关推荐
oradh36 分钟前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
Sisphusssss1 小时前
香橙派5plus GPIO
linux·python·ubuntu
YOU OU1 小时前
Redis哨兵 & 集群
数据库·redis·sentinel
小罗水1 小时前
第8章 文档解析与文本切片
数据库·spring·spring cloud·微服务
颜酱1 小时前
08 | 把维度值同步到 Elasticsearch(生成阶段)
人工智能·python·langchain
瞬间&永恒~1 小时前
【MySQL】 主从复制多拓扑搭建实验
运维·数据库·mysql·云原生
久久学姐1 小时前
基础转码学 AI:Java+Python 双语言入门,3 个月可落地实战项目
java·python·ai·转码·实战项目
han_hanker2 小时前
sql语法 DECODE, CASE ... WHEN
数据库·sql·oracle
ZHOU_WUYI2 小时前
4. light wam 模型loss计算过程
开发语言·人工智能·python
井川廊咏2 小时前
vi 删除指定范围的行,不用再反复按 dd
数据库·mysql