【问题标题】:Django OperationalError(2013, "Lost connection to MySQL server during query")Django OperationalError(2013,“查询期间丢失与 MySQL 服务器的连接”)
【发布时间】: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_pa​​cket'、 和 'max_user_connections' 递增到最大值。没有变化。
  • 查询不应该很大,因为表中只有大约 20 项,而且大多数时候我们查询的是一项。
  • 我们不会在任何地方手动管理连接,因此我们不会不小心过早关闭连接。
  • 我翻阅了 MySQL 日志,只发现以下消息:

    Aborted connection ## to db: 'db_name' user: 'username' host: 'host_ip' (读取通信数据包时出错)。这似乎很笼统,并且暗示开发服务器上的某些东西正在关闭连接。

  • 让开发服务器停止抛出此异常的唯一方法是重新启动 Aurora DB。
  • 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

【问题讨论】:

  • 也许是时候支持 Aurora 了。
  • 5.7.12 是不是有点老了。

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


【解决方案1】:

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

【讨论】:

  • 不,我不知道。我总是使用 PyMySQL。永远不要使用另一个
猜你喜欢
  • 1970-01-01
  • 2019-01-05
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多