我使用的是SQLAlchemy和两个MySQL数据库。其中一个是本地托管在我的机器上的开发数据库,另一个是由MySQL在Heroku上为生产提供的ClearDB服务器。
我有一个长时间运行的会话与数据库一起打开,而它与另一个服务执行同步操作。在我的本地机器上,这完成得很好,但在生产中,我得到了错误(2013年,“查询期间失去了到MySQL服务器的连接”)。
我读过其他文章,其中说可以是请求的大小太大,也可以是需要调整的池刷新变量。我不认为事务有效负载相对较大,在调用SQLAlachemy create_engine时设置一个create_engine变量似乎不起作用。
有没有其他人经历过这个问题,或者能帮我缩小错误的根本原因--这似乎是个陷阱,我不知道从哪里开始。
按照注释中的要求,两个系统都返回select @@interactive_timeout, @@wait_timeout:28800,28800的相同值。
谢谢
发布于 2016-12-01 12:05:50
即使这两个数据库似乎使用相同的超时和配置,一般情况下。结果是ClearDB在其他地方执行的超时。
ClearDB监视连接,并在连接打开超过一分钟时将其关闭。我最初没能找到这个文件化。
修复实际上是在创建引擎时将pool_recycle参数设置为pool_recycle=60。我之前的尝试是使用一个任意的数字(因为我不知道ClearDB的超时)高于这个值。
https://stackoverflow.com/questions/40662680
复制相似问题