Django OperationalError(2013,“查询期间丢失与 MySQL 服务器的连接”)
Posted
技术标签:
【中文标题】Django OperationalError(2013,“查询期间丢失与 MySQL 服务器的连接”)【英文标题】:Django OperationalError(2013, "Lost connection to MySQL server during query") 【发布时间】:2019-06-29 21:00:57 【问题描述】:我在使用两台服务器连接到同一个 Aurora DB 时遇到上述错误。
我们在 Elastic Beanstalk 上运行一个简单的 Django REST Framework,它连接到 Aurora 数据库集群。每当我们启动数据库并从 EBS 服务器连接测试 API 时,都可以正常运行。但是,如果我随后启动连接到同一数据库的本地开发服务器,则在转到本地服务器上的同一路由时会出现操作错误。
我尝试增加'connect_time'、'interactive_timeout'、'max_execution_time'、'wait_timeout'、'max_allowed_packet'、 和 'max_user_connections' 递增到最大值。没有变化。 查询不应该很大,因为表中只有大约 20 项,而且大多数时候我们查询的是一项。 我们不会在任何地方手动管理连接,因此我们不会不小心过早关闭连接。 我翻阅了 mysql 日志,只发现以下消息:让开发服务器停止抛出此异常的唯一方法是重新启动 Aurora DB。 Django 数据库设置将 CONN_MAX_AGE 设置为 0,这对我来说最有意义。 我创建了一个新的 Aurora 数据库实例,其中包含新的迁移和表中的一个条目,但存在相同的问题。Aborted connection ## to db: 'db_name' user: 'username' host: 'host_ip' (读取通信数据包时出错)。这似乎很笼统,并且暗示开发服务器上的某些东西正在关闭连接。
此外,如果我打开 Django shell 并使用模型运行一个简单的查询,Beanstalk 服务器将开始抛出 InterfaceError(0, '')。在重新启动 Aurora 数据库之前,这种情况仍然存在。
我已经挖掘了许多来源,但还没有找到解决办法。其他人有什么想法吗?
版本信息
Django == 2.1.5 Django REST 框架 == 3.9.1 MySQL 兼容引擎 == 5.7.12【问题讨论】:
也许是时候支持 Aurora 了。 5.7.12 是不是有点老了。 【参考方案1】:您可以尝试使用 MySQL 连接器 PyMySQL==0.7.9
【讨论】:
不,我不知道。我总是使用 PyMySQL。永远不要使用另一个以上是关于Django OperationalError(2013,“查询期间丢失与 MySQL 服务器的连接”)的主要内容,如果未能解决你的问题,请参考以下文章
django.db.utils.OperationalError:没有这样的表Django 2
Django 1.5:使用 postgresql-psycopg2 运行“python manage.py syncdb”时 Windows 中的 OperationalError
django.db.utils.OperationalError:致命:角色“django”不存在
尝试在 Django 1.9 中迁移——奇怪的 SQL 错误 "django.db.utils.OperationalError: near ")": syntax er
django.db.utils.OperationalError: (1046, '未选择数据库')
OperationalError:没有这样的表:django_content_type 和 django_session