一个Python 3.6脚本在首次启动时使用SQLAlchemy访问MySQL数据库。然后,脚本在数小时内继续运行而不访问MySQL数据库。但是当它最终决定访问MySQL时,我们会遇到一个错误:
sqlalchemy.exc.OperationalError: (mysql.connector.errors.OperationalError) MySQL连接不可用。[SQL:'SELECT ........ ]
引擎是使用以下代码创建的:
create_engine("mysql+mysqlconnector://..., pool_pre_ping=True, pool_recycle=290)
pool_recycle
的值已经被减少到290秒,比其他SO帖子中推荐的3600秒要短得多。
启用 pool_pre_ping
也没有帮助重新连接MySQL以避免上述错误。
MySQL 变量
SHOW VARIABLES LIKE 'wait_%';
返回了具有值 28800
的 wait_timeout
。
SHOW VARIABLES LIKE 'interactive_%';
返回了具有值 28800
的 interactive_timeout
。
软件版本
- Python 3.5
- SQLAlchemy 1.2.2
- Ubuntu 16.04
我们应该如何排除故障?