Django OperationalError(2013年,“在查询期间丢失了与MySQL服务器的连接”)

问题描述 投票:2回答:1

使用两台服务器连接到同一个Aurora数据库时,我遇到了上述错误。

我们在Elastic Beanstalk上运行一个简单的Django REST Framework,它连接到Aurora数据库集群。每当我们启动数据库并从EBS服务器连接测试API时都会很好。但是,如果我然后启动连接到同一个数据库的本地开发服务器,则在本地服务器上转到相同路由时会出现操作错误。

  • 我已经尝试以增量为单位增加'connect_time','interactive_timeout','max_execution_time','wait_timeout','max_allowed_pa​​cket'和'max_user_connections'。没变。
  • 查询不应该很大,因为表中只有大约20个项目,而且大多数时候我们查询一个项目。
  • 我们不是在任何地方手动管理连接,因此我们不会意外地过早关闭连接。
  • 我已经挖掘了MySQL日志,只发现了以下消息: 中止连接##到db:'db_name'用户:'用户名'主机:'host_ip'(读取通信包时出错)。这似乎是非常通用的,并暗示开发服务器上的某些东西正在关闭连接。
  • 让开发服务器停止抛出此异常的唯一方法是重启Aurora数据库。
  • Django数据库设置将CONN_MAX_AGE设置为0,这对我来说是最有意义的。
  • 我创建了一个新的Aurora数据库实例,其中包含新的迁移和表中的一个条目,但问题相同。

另外,如果我打开Django shell并使用模型运行简单查询,那么Beanstalk服务器将开始抛出InterfaceError(0,'')。在Aurora数据库重新启动之前,这一直存在。

我已经挖掘了很多来源,但尚未找到修复方法。其他人有一些想法吗?

版本信息

  • Django == 2.1.5
  • Django REST框架== 3.9.1
  • MySQL兼容性引擎== 5.7.12
mysql django python-3.x django-rest-framework amazon-rds-aurora
1个回答
1
投票

您可以尝试使用MySQL连接器PyMySQL == 0.7.9

© www.soinside.com 2019 - 2024. All rights reserved.