我对尝试解决此问题感到非常厌倦,因为每次尝试修复后它似乎都会恢复。
我有一个使用SQLAlchemy的PyQt应用程序,可以使用连接池连接到远程MySQL数据库。在使软件闲置任意时间后,下一个查询将导致程序崩溃,因为数据库连接已过时。正如SQLAlchemy文档中建议的那样,我在引擎创建过程中尝试使用pool_recycle
和pool_pre_ping
参数来使连接停止过时。两者都没有起作用,我仍然遇到同样的问题。我已经确认我选择的回收时间在MySQL连接断开时间之内,并且仍然无法正常工作。
我不明白为什么在MySQL服务器上的show processlist;
中,仍然可以从运行的单个软件实例中看到六个连接。即使在使用pool_recycle
时,这些连接也会一次保持几个小时的睡眠状态。看来文档中建议的参数实际上都没有做任何事情。