9-13|django.db.utils.OperationalError: (2006, 'Server has gone away') 报错

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 9-13|django.db.utils.OperationalError: (2006, 'Server has gone away') 报错

`django.db.utils.OperationalError: (2006, 'Server has gone away')` 是一个与 MySQL 数据库连接相关的错误。这个错误通常发生在以下情境:

1. **长时间的数据库连接**:当 Django 连接到数据库但长时间没有活动时,MySQL 可能会关闭这个连接。当 Django 试图在一个已经被关闭的连接上执行操作时,它会报这个错误。

2. **MySQL 服务器重启**:如果 MySQL 服务器被重启或崩溃,所有的连接都会被中断,并且会显示这个错误。

3. **大型查询**:如果你尝试发送一个非常大的查询或数据包,超过了 `max_allowed_packet` 的限制,可能会导致此错误。

4. **其他网络问题**:任何可能中断 Django 与 MySQL 之间连接的网络问题也都可能导致这个错误。

解决方法包括:

1. **重新连接**:如果这是一个偶发的问题,简单地重新连接到数据库可能就足够了。

2. **增加 `wait_timeout` 和 `interactive_timeout`**:在 MySQL 配置中增加这两个设置的值可以使连接持续更长的时间。例如,在 `my.cnf` 或 `my.ini` 中增加或修改以下行:

 ```

 wait_timeout = 28800

 interactive_timeout = 28800

 ```

 之后,确保重启 MySQL 服务器。

3. **增加 `max_allowed_packet`**:如果你认为问题是由于大型查询引起的,增加 `max_allowed_packet` 的大小也可能有助于解决。例如,设置为 `64M`:

 ```

 max_allowed_packet = 64M

 ```

4. **使用持久连接**:考虑使用数据库的持久连接特性,这样连接不会在每次请求后关闭。

5. **数据库连接池**:使用数据库连接池,如 `dj-database-url`,可以更有效地管理数据库连接。

6. **检查网络问题**:如果你认为可能是网络问题,检查服务器和网络设备的日志,确保连接没有被中断。

7. **Django 设置**:确保 Django 的 `DATABASES` 配置中的 `CONN_MAX_AGE` 值是合适的。这个值定义了持久连接的最大生存时间。

最后,总是确保你的 Django 和数据库驱动(如 `mysqlclient`)是最新的,以避免任何已知的与连接相关的问题。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
关系型数据库 MySQL 数据库
django4版本提示 django.db.utils.NotSupportedError: MySQL 8 or later is required (found 5.7.26)
在学习Django时,用户遇到`django.db.utils.NotSupportedError`,提示需要MySQL 8.0.25或更高版本,但其系统上是5.7.26。为解决这个问题,用户决定不升级MySQL,而是选择注释掉Django源码中的数据库版本检查。通过Python命令行找到Django安装路径,进入`db/backends/base/base.py`,注释掉`self.check_database_version_supported()`函数
758 0
|
2月前
|
安全 关系型数据库 MySQL
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
【Python】已解决:pymysql.err.OperationalError:(2003 “Can’t connect to MySQL server on ‘localhost’ ([WinEr
163 1
|
4月前
|
关系型数据库 MySQL 数据库
django.db.utils.operationalerror:\xF0\x9F\x9....报错解决办法
在将Hexo的.md文件迁移至Django博客时遇到 OperationalError: (1366, "Incorrect string value"),原因是.md文件包含MySQL不支持的4字节UTF8字符。解决方案:1) 将数据库和字段的字符集改为utf8mb4;2) 在Django的MySQL连接串中设置字符集为utf8mb4。问题解决后,顺利插入数据。更多详情见博客:[http://xiejava.ishareread.com/](http://xiejava.ishareread.com/)
39 2
|
2月前
|
SQL 网络协议 网络安全
【Python】已解决:pymssql._pymssql.OperationalError: (20009, b’DB-Lib error message 20009, severity 9:\nUn
【Python】已解决:pymssql._pymssql.OperationalError: (20009, b’DB-Lib error message 20009, severity 9:\nUn
106 0
|
9月前
|
Linux Shell Swift
django(二)centos安装django3.2报错SQLite 3.8.3 or later is required (found 3.7.17)
我正在参加「掘金·启航计划」 Centos安装diango3.2框架请参照《django(一)ubuntu18.04安装框架》 在运行: 复制代码 python3 manage.py runserver 0.0.0.0:81 的时候报错: swift 复制代码 django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17). 报错的大体意思是:对sqlite最低版本的需求的3.8.3,但是现在只找到了3.7.17。
131 1
|
关系型数据库 数据库 Ruby
记录一次 bin/rails db:migrate 报错
记录一次 bin/rails db:migrate 报错
84 0
|
数据库 Python
执行superset db upgrade初始化Supetset数据库时报错ImportError: cannot import name ‘soft_unicode’ from ‘markupsaf
执行superset db upgrade初始化Supetset数据库时报错ImportError: cannot import name ‘soft_unicode’ from ‘markupsaf
224 0
|
前端开发 关系型数据库 MySQL
Django 自定义装饰器解决MySQL server has gone away错误
Django 自定义装饰器解决MySQL server has gone away错误
104 0
|
SQL 关系型数据库 MySQL
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query')
1153 0
|
关系型数据库 MySQL 数据库连接
django数据库报错汇总:django.db.utils.OperationalError 1045,1049,2003
django数据库报错汇总:django.db.utils.OperationalError 1045,1049,2003
841 0