sqlalchemy.exc.OperationalError:(mysql.connector.errors.OperationalError)MySQL连接不可用

nzkunb0c  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(310)

由于某种原因,我得到了与数据库断开连接的错误消息。我正在使用Flask,Python和SQLAlchemy,该应用程序在www.example.com上运行pythonanywhere.com我已经遇到了类似的问题,无法找到解决问题的方法。具体来说,我将app.config[“SQLALCHEMY_POOL_RECYCLE”] = 299作为推荐设置。然而,在下面的链接https://help.pythonanywhere.com/pages/UsingSQLAlchemywithMySQL/中,我在pythonanywhere中找到了建议,说池回收的值应该是280。
我使用Flask-SQLAlchemy==3.0.5和sqlalchemy版本'2,0,19'

Python 3.10.5 (main, Jul 22 2022, 17:09:35) [GCC 9.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> sqlalchemy.__version__
'2.0.19'
>>>

字符串
我的配置是:

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username=DATABASE_USERNAME,
    password=DATABASE_PASSWORD,
    hostname=DATABASE_HOST_NAME,
    databasename=DATABASE_NAME
)

app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 280


pythonanywhere上的https://help.pythonanywhere.com/pages/UsingSQLAlchemywithMySQL/链接中的文档指出:“如果您使用Flask-SQLAlchemy插件,那么对于最新版本,您可以这样配置它:

app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'pool_recycle' : 280}
db.init_app(app)



我的问题是:我应该换掉

app.config["SQLALCHEMY_POOL_RECYCLE"] = 280


app.config['SQLALCHEMY_ENGINE_OPTIONS'] = {'pool_recycle' : 280}

  • 谢谢-谢谢
sczxawaw

sczxawaw1#

找到的解决方案:执行链接https://help.pythonanywhere.com/pages/UsingSQLAlchemywithMySQL/建议的新格式,并让Web应用程序在无屏幕活动的情况下运行7分钟。实验结果令人满意。应用程序未检测到与MySQL数据库的连接丢失。建议您跟踪Flask-SQLAlchemy的版本,并正确应用新格式app.config ['SQLALCHEMY_ENGINE_OPTIONS']={'pool_recycle':280}来解决与MySQL失去连接的情况。

相关问题