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
  • 相关阅读:
    MVC3 验证码
    说说.NET反编译工具
    HTTP协议学习
    Spring Web Flow 的优缺点
    Java CLASSPATH 引发的问题
    MySQL 高级
    Java Policy
    AJAX
    数据结构与算法学习资源
    C#学习资源
  • 原文地址:https://www.cnblogs.com/sevck/p/13571330.html
Copyright © 2011-2022 走看看