zoukankan      html  css  js  c++  java
  • Django Lost connection to MySQL server during query

    实际的原因在于mysql 设置的timeout大于你的脚本执行时间,导致django的查询超时。

     登录mysql可以查看mysql wait_timeout:

    SHOW GLOBAL VARIABLES;

    django为了减少不必要的数据库连接、关闭,复用了数据库连接,当开始一个请求后建立一个连接池存放连接,之后此次请求都复用一个连接。那猜测就是django保存连接的比wait_timeout长了,如果保存时间短一些就可以重新建立连接避免此错误了。
    没错,官方文档也已经说明了此问题,设置数据库 CONN_MAX_AGE参数,示例:

    DATABASES = {
        "default": {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': '',
                'USER': '',
                'PASSWORD': '',
                'HOST': '',
                'CONN_MAX_AGE': 9  # 比wait_timeout小一些
        }
    }

    但是有的时候需要执行非常耗时的job,这种方式是行不通的。

    解决方案:

    再查询之前加入:

    django.db.close_old_connections
  • 相关阅读:
    寒假每日总结(八)
    寒假每日总结(七)
    寒假每日总结(六)
    2020-2.19
    2020-2.18
    寒假每日总结-2020.2.11
    寒假每日总结-2020.2.10
    寒假每日总结-2020.2.9
    寒假每日总结
    寒假每日总结——2020.2.6
  • 原文地址:https://www.cnblogs.com/sevck/p/13571330.html
Copyright © 2011-2022 走看看