报错如下:
2013, 'Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)
解决方法:
sqlalchemy配置中添加如下:
# 回收连接
app.config["SQLALCHEMY_POOL_RECYCLE"] = 1800
# 每次执行sql前 悲观检查db是否可用;虽然资源稍微额外的消耗,但是简单可靠
app.config["SQLALCHEMY_ENGINE_OPTIONS"] = {'pool_pre_ping': True}
或
engine = create_engine("mysql+pymysql://user:pw@host/db", pool_pre_ping=True,pool_recycle=1800)
注意点:
1. SQLALCHEMY_POOL_RECYCLE的值 应该比mysql中设置的 interactive_timeout 和 wait_timeout 值小 才有效;
2. SQLALCHEMY_POOL_TIMEOUT的值(默认10s) 应该比 mysql的 connect_timeout值 小或者等于;
否则 都有可能出现 如上错误;
相关连接:
https://docs.sqlalchemy.org/en/13/core/pooling.html#pool-disconnects
https://sanyuesha.com/2019/01/02/sqlalchemy-pool-mechanism/
https://www.cnblogs.com/cwp-bg/p/8876012.html
https://blog.csdn.net/mawenshu316143866/article/details/82381202