最近项目中用到sqlalchemy来作为orm框架,数据库引擎用的是pymysql,demo做出来之后,调用一个数据录入功能的API偶尔发现会出现500错误,查看后台日志在API执行过程中报了“MySQL server has gone away”错误,起初认为是数据有问题,但是后来经过调试,同一份数据有的时候可以执行有的时候就报错。所以怀疑还是sqlalchemy中的问题,相关代码如下,

engine = create_engine(db_url, echo=False)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base(engine)

这是官网上给出的最简单的连接创建方式,继续读文档发现sqlalchemy默认会维持一个5个连接的数据库连接池,而池里面的连接默认是永不失效!也就意味着如果数据库方面或者网关把连接断掉了,池里面的连接就会变成一个无效连接,继而出现开头遇到的这个问题。于是修改连接参数,加入“pool_recycle=60”表示池中的连接只维持1分钟时间,超出1分钟的连接会被弃用用新连接来代替,修改过后服务一切正常。

db_url = "mysql+pymysql://root:password@localhost:3306/third_eye?charset=utf8mb4"
engine = create_engine(db_url, echo=False, pool_recycle=7200)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base(engine)

文中的60秒超时时间并不是一个绝对合理的值,需要根据业务环境来配置,mysql默认的连接超时时间是8小时,但是我们实际环境中测出来的超时时间远远小于8小时,所以有可能是网关之类的设施将连接关闭的,但是并没有具体确认。所以理论上来说,pool_recycle的值只要小于环境中连接关闭的最小间隔就可以了。

转发文章之外PS:
mysql默认的wait_timeout=28800,也就是8个小时,一般夜间,我们服务器就处于静止状态,因此,8小时候之后mysql连接就会自动关闭,因而导致此问题。

[转发]sqlalchemy中出现MySQL server has gone away的解决方法相关推荐

  1. 导入sql文件报错:MySQL server has gone away 以及解决方法

    项目场景: 导入sql文件报错:MySQL server has gone away 以及解决方法 问题描述: 在我们使用mysql导入大文件sql时可能会报MySQL server has gone ...

  2. opensips mysql 认证_基于ubuntu中使用mysql实现opensips用户认证的解决方法

    1 MySQL支持 1.1 MySQL模块支持 默认安装时,不包含MySQL模块. opensipsctlrc文件中包含了数据库配置的信息,要想让opensips支持mysql数据库,在编译安装的时候 ...

  3. Mysql导入sql脚本时 脚本太长 报 Mysql server has gone away时解决方法

    show global variables like 'max_allowed_packet'; --查看最大允许的数据包的大小,默认为4M. set global max_allowed_packe ...

  4. WampServer + phpcms 开发中,浏览器 localhost 出现 Cannot to connect to mySQL server 的原因分析和解决办法?

    首先,确定你phpcms的文件已经都已经放置在对应的文件目录下! 注意: 本文针对 Wampserver + phpcms 开发中出现的此类问题.其他情况仅供参考. 在安装软件**WampServer ...

  5. Can't connect to MySQL server on 'localhost' (10061)的解决办法!

    Can't connect to MySQL server on 'localhost' (10061)的解决办法! http://blog.sina.com.cn/s/blog_52ebca1f01 ...

  6. Mysql 查询blob数据很慢,关于oracle中clob字段查询慢的问题及解决方法

    关于oracle中clob字段查询慢的问题及解决方法 最近在用oracle的过程中用到了对blob字段模糊查询的问题,对oracle来说,我并不是高手,找了很多的资料终于能够查出来了. blob字段直 ...

  7. mysql8 10061_MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法

    MySQL8.0报错Can't connect to MySQL server on 'localhost' (10061)的解决办法 事情的起因 今天课堂上要展示小组项目,需要用一个软件叫WPS-I ...

  8. (2006, 'MySQL server has gone away') 错误解决 - dba007的空间 - 51CTO技术博客

    (2006, 'MySQL server has gone away') 错误解决 - dba007的空间 - 51CTO技术博客 (2006, 'MySQL server has gone away ...

  9. mysql不支持union_MySQL中Union子句不支持order by的解决方法

    本文实例讲述了MySQL中Union子句不支持order by的解决方法.分享给大家供大家参考,具体如下: 我对DB知之甚少,这问题只在MySQL遇到,不知道别的DBMS是不是也如此. 问题是这样的, ...

最新文章

  1. 特斯拉又被挖墙脚:Autopilot总监离职,加入苹果造车团队
  2. Android 改变AlertDialog的大小
  3. 车辆检测,车牌识别WPOD-NET OCR-Net
  4. 计算机视觉Computer Vision网址导航
  5. DHCP服务器 出现的故障
  6. PetShop4.0--转载
  7. 箱线图怎么判断异常值_异常数值识别(检测)
  8. Jupyter Notebook Config
  9. xss漏洞java代码_Java处理XSS漏洞的工具类代码
  10. 拟合函数,偏差和方差
  11. python花瓣网爬取图片_花瓣网图片爬取
  12. 文件上传(FileUpload)
  13. 2022最新ES面试题整理(Elasticsearch面试指南系列)
  14. js判断时间是否在某一时间段内
  15. 浏览器的 User-Agent是什么
  16. windows 2000/XP/2003服务全集
  17. C++STL之stack栈容器
  18. POJ1287 (最小生成树) 中文版
  19. mima.php密码找回,mima.php · 2662419405/Studyit-club - Gitee.com
  20. 云之道知识付费3.1.1【最新开源】全插件,独立版

热门文章

  1. windows无法打开添加打印机_win7系统提示无法打开添加打印机怎么办 无法打开添加打印机解决方法【介绍】...
  2. 苹果手机主题商店在哪_师出同门 苹果的LiDAR比安卓手机的Tof镜头好在哪|安卓手机|镜头|手机|iphone...
  3. 【WindowsAPI之MoveWindow】 C#调整目标窗体的位置、大小
  4. 7.3国服人口最多的服务器,实时人口普查#71:恶魔猎手数据实装 成人口最多职业...
  5. Linux 命令行远程下载文件curl,wget
  6. 买计算机配置比较好,什么品牌电脑好 买电脑主要看什么配置
  7. rtx3090显卡什么牌子好
  8. 海口java工资水平2017,海口的平均工资居然挤进了全国十名,我大概是上了个假班……...
  9. 2022搜狐校园算法大赛正式开启
  10. solidworks2016安装出现的问题及解决方法