我正在使用sqlAlchemy和两个MySQL数据库.其中一个是我的机器本地托管的开发数据库,另一个是ClearDB在Heroku上提供的用于生产的MysqL服务器.
我与数据库打开了一个长时间运行的会话,同时它与另一个服务执行同步操作.在我的本地机器上,这很好,但在生产中我得到错误(2013年,“在查询期间丢失了与MysqL服务器的连接”).
我已经读过其他帖子,说它可能是请求的大小太大或需要调整的池刷新变量.我不相信事务有效负载相对那么大,并且在调用sqlAlachemy create_engine时设置pool_recycle变量似乎不起作用.
有没有其他人遇到过这个问题,或者能够帮助我缩小这个错误的根本原因 – 这似乎是一个问题,我不知道从哪里开始.
根据评论中的要求,两个系统都为select @@ interactive_timeout,@@ wait_timeout:28800,28800返回相同的值.
谢谢
最佳答案
通常,两个数据库似乎都使用相同的超时和配置.事实证明,ClearDB在其他地方执行了超时.
ClearDB监视连接并在打开超过一分钟时终止它们.我原本不能找到这个docuemnted.
该修复实际上是在创建引擎时将pool_recycle参数设置为pool_recycle = 60.我以前的尝试是使用高于此值的任意数字(因为我不知道ClearDB的超时).