诊断 2013 失去与 MySQL 的连接

Diagnosing 2013 Lost connection to MySQL

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

我有一个很长的 运行 会话与数据库打开,同时它与另一个服务执行同步操作。在我的本地机器上,这完成得很好,但在生产中我收到错误 (2013, 'Lost connection to MySQL server during query').

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

有没有其他人遇到过这个问题或能够帮助我缩小导致该错误的根本原因的范围 - 这似乎是一个包罗万象的问题,我不确定从这里该何去何从。

根据评论中的要求,两个系统 return select @@interactive_timeout, @@wait_timeout 的相同值:28800、28800。

谢谢

尽管这两个数据库似乎通常使用相同的超时和配置。原来是ClearDB在别处执行的超时。

ClearDB 监视连接并在连接打开超过一分钟时将其终止。我最初找不到这个 docuemnted.

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