【发布时间】:2016-11-17 18:43:24
【问题描述】:
我将 SQLAlchemy 与两个 MySQL 数据库一起使用。其中一个是我在本地机器上托管的开发数据库,另一个是 ClearDB 在 Heroku 上提供的 MySQL 服务器,用于生产。
当它与另一个服务执行同步操作时,我与数据库打开了一个长时间运行的会话。在我的本地机器上,这完成得很好,但在生产中我得到了错误(2013,'Lost connection to MySQL server during query')。
我读过其他帖子说它可能是请求的大小太大或需要调整池刷新变量。我不相信事务有效负载相对较大,并且在调用 SQLAlachemy create_engine 时设置 pool_recycle 变量似乎不起作用。
有没有其他人遇到过这个问题或能够帮助我缩小导致该错误的根本原因 - 这似乎是一个包罗万象的问题,我不知道从哪里开始。
根据 cmets 的要求,两个系统都为 select @@interactive_timeout, @@wait_timeout 返回相同的值:28800、28800。
谢谢
【问题讨论】:
-
请在您的开发数据库和生产数据库上发出此 SQL 查询。
select @@interactive_timeout, @@wait_timeout。请edit您的问题告诉我们您在两个数据库中的值。有时生产数据库的超时时间比开发数据库短。 -
啊,当我开始发布此内容时,我的意思是要包括这些数字……但忘记了。我已经更新了我的问题。谢谢@O.Jones
-
您是否在交互式客户端会话中选择了变量?如果是这样,你需要做
SELECT @@global.interactive_timeout, @@global.wait_timeout。在交互式会话中,会话级别的wait_timeout被调整为interactive timeout,所以它没有用。 -
嗨@elenst,不太清楚你的意思。我正在使用 Sequel Pro 进行这些查询(如果有帮助的话)。我用 global 再次尝试了它们,并得到了与上面发布的相同的结果:/。
-
如果您在会话开始时在服务器上执行 ping 操作,并且在连接超时后,您会获得相同的 IP 地址吗?可能是“路由”问题。
标签: mysql heroku sqlalchemy cleardb