诊断2013与MySQL失去联系

时间:2016-11-17 18:43:25

标签: mysql heroku sqlalchemy cleardb

我正在使用带有两个MySQL数据库的SQLAlchemy。其中一个是我的机器上本地托管的开发数据库,​​另一个是ClearDB在Heroku上提供的用于生产的MySQL服务器。

我与数据库打开一个长时间运行的会话,同时它与另一个服务执行同步操作。在我的本地机器上,这很好,但是在生产中我得到了错误(2013年,'在查询期间丢失了与MySQL服务器的连接')。

我读过其他帖子,说它可能是请求的大小太大,或者是需要调整的池刷新变量。我不相信事务有效负载相对那么大,并且在调用SQLAlachemy pool_recycle时设置create_engine变量似乎不起作用。

是否有其他人遇到过这个问题,或者能够帮助我缩小这个错误的根本原因 - 这似乎是一个问题,我不知道从哪里开始。

根据评论中的要求,两个系统都会为select @@interactive_timeout, @@wait_timeout返回相同的值:28800,28800。

由于

1 个答案:

答案 0 :(得分:3)

即使这两个数据库看起来通常使用相同的超时和配置。事实证明,ClearDB在其他地方执行了超时。

ClearDB监视连接并在打开超过一分钟时终止它们。我原本不能找到这个docuemnted

该修复实际上是在创建引擎时将pool_recycle参数设置为pool_recycle=60。我以前的尝试是使用任意数字(因为我不知道ClearDB的超时)高于此值。