问题:
使用Flask-SQLALchemy连接mysql数据库,过几个小时第一次使用会出现MySQL Connection not available的情况,第二次使用又恢复正常了。
解决方案:
用命令查看数据库的过期时间
show global variables like 'wait_timeout';
1.修改mysql中wait_timeout参数的值,让这个时间大于连接池的回收时间;
2.修改数据库连接池的配置,数据库连接池都会带有一个参数:回收时间(就是一定时间内不使用就会回收),修改这个参数的值,小于wait_timeout的值即可。在flask-SQLAlchemy中有个配置是SQLALCHEMY_POOL_RECYCLE(多之后对线程池中的线程进行一次连接的回收),如果这个值是-1代表永不回收,Flask-SQLALchemy 自动设定这个值为2小时,可以将这个值设置的小于wait_timeout参数的值。