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

时间:2019-02-05 23:31:43

标签: mysql django python-3.x django-rest-framework amazon-rds-aurora

使用两个服务器连接到同一个Aurora数据库时,出现了以上错误。

我们正在Elastic Beanstalk上运行一个简单的Django REST Framework,该{@ 3}}连接到Aurora数据库集群。每当我们启动DB并从EBS服务器连接测试API时,一切都会顺利进行。但是,如果我随后启动连接到同一数据库的本地开发服务器,则在转到本地服务器上的相同路由时会遇到操作错误。

  • 我尝试增加'connect_time','interactive_timeout','max_execution_time','wait_timeout','max_allowed_pa​​cket', 和“ max_user_connections”以最大增量递增。没变化。
  • 查询不应太大,因为表中只有约20个项目,而且大多数时候我们只查询一个项目。
  • 我们不会在任何地方手动管理连接,所以这不是我们意外地过早关闭了连接。
  • 我浏览了MySQL日志,仅发现以下消息:
      

    与db的连接##中止了连接:db_name用户:username主机host_ip(读取通讯包时出错)。这似乎很通用,并且暗示开发服务器上的某些内容正在关闭连接。

  • 使开发服务器停止引发此异常的唯一方法是重新启动Aurora数据库。
  • Django数据库设置的CONN_MAX_AGE设置为0,这对我来说最有意义。
  • 我创建了一个新的Aurora数据库实例,该实例具有新的迁移并在表中有一个条目,并且存在相同的问题。

此外,如果我打开Django shell并使用模型运行简单查询,那么Beanstalk服务器将开始引发InterfaceError(0,'')。再次保持这种状态,直到重新启动Aurora数据库为止。

我已经浏览了许多资料,但还没有找到解决方法。其他人有什么想法吗?

版本信息

  • Django == 2.1.5
  • Django REST Framework == 3.9.1
  • MySQL兼容性引擎== 5.7.12

1 个答案:

答案 0 :(得分:1)

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