python中使用pymysql出现错误pymysql.err.operationalerror 2013
具体问题:pymysql.err.OperationalError: (2013, ‘Lost connection to MySQL server during query’)
使用flask-sqlalchemy遇到的问题,当较长时间没有去访问网站,再次打开时就会报一个数据库连接失败的错误。
连接池连接mysql数据库失败,应该是mysql数据库连接超时,mysql数据库配置文件存在以下两个参数,是负责管理连接超时的。
- interactive_timeout:针对交互式连接
- wait_timeout:针对非交互式连接。
解决方式:
修改数据库连接池的配置,数据库连接池都会带有一个参数:回收时间(就是一定时间内不使用就会回收),修改这个参数的值,不要大于wait_timeout的值即可。在flask-SQLAlchemy中有个配置是SQLALCHEMY_POOL_RECYCLE(多之后对线程池中的线程进行一次连接的回收),如果这个值是-1代表永不回收,Flask-SQLALchemy 自动设定这个值为2小时,我们可以将这个值设置的小于wait_timeout参数的值也就是8小时即可。
flask-sqlalchemy
参数 | 说明 |
---|---|
SQLALCHEMY_POOL_RECYCLE | 自动回收连接的秒数。这对 MySQL 是必须的,默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话, Flask-SQLAlchemy 会自动地设置这个值为 2 小时。 |