【问题标题】:"MySQL server has gone away" error after long idle长时间空闲后出现“MySQL 服务器已消失”错误
【发布时间】:2017-09-25 16:42:34
【问题描述】:

我知道这个问题不是 SO 上的新问题,但我无法找到解决方案。每当我在让我的应用程序通宵运行后回到我的办公桌时,我都会收到一个MySQL server has gone away 错误,该错误一直持续到我重新启动我的 uwsgi 服务。我已经完成了以下操作:

  • pool_recycle=我的create_engine() 通话中的一些非常大的数字
  • @event.listens_for() 装饰器之后添加了ping_connection()(我不能使用pool_pre_ping - 这会破坏我的create_engine() 调用)
  • /etc/my.cnf 中我添加了wait_timeoutinteractive_timeout 具有较大值的参数

但没有任何效果。

【问题讨论】:

  • pool_recycle 的值是否小于timeout 的值?
  • 它们彼此相同。我将它们设置为一周。
  • 设置为低,需要刷新会话beforetimeout
  • 我这样做了,直到此时我才看到错误。感谢您的建议。

标签: python mysql flask sqlalchemy flask-sqlalchemy


【解决方案1】:

从位于 here 的 sqlalchemy 文档中,您正在寻找 pool_recycle 功能。

from sqlalchemy import create_engine

engine = create_engine("mysql://scott:tiger@localhost/test", pool_recycle=28700)

在你的 mysql 配置文件 my.cnf

中将 pool_recycle 设置为一个值 wait_timeout

MySQL 默认 wait_time 为 28800(8 小时)

如果你修改了 conf 文件,别忘了重启你的服务(例如 mysql 等)

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2012-08-22
    • 2012-06-28
    • 2011-12-18
    相关资源
    最近更新 更多