【问题标题】:Django ORM key error with lost MySql connection丢失 MySql 连接的 Django ORM 密钥错误
【发布时间】:2019-12-14 01:52:02
【问题描述】:

这是环境:

  1. 与 MySql 兼容的 AWS Aurora 数据库。

  2. Django 2.0.3 (Python 3.6)

  3. Pip-Mysql 依赖项:django-mysql==2.2.2, mysqlclient==1.3.12.

  4. 主从数据库配置。

似乎 django 或 mysql 引擎总是在某些查询上失败,从而导致此特定错误:

Traceback(最近一次调用最后一次):文件 “/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/django/db/models/fields/related_descriptors.py”, 第 158 行,在 get 中 rel_obj = self.field.get_cached_value(instance) 文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/django/db/models/fields/mixins.py”, 第 13 行,在 get_cached_value 中 return instance._state.fields_cache[cache_name] KeyError: 'assigned_to'

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/django/db/backends/utils.py”, 第 85 行,在 _execute 返回 self.cursor.execute(sql, params) 文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/django/db/backends/mysql/base.py”, 第 71 行,在执行中 返回 self.cursor.execute(query, args) 文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/MySQLdb/cursors.py”, 第 253 行,执行中 self._warning_check() 文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/MySQLdb/cursors.py”, 第 148 行,在 _warning_check 警告 = db.show_warnings() 文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/MySQLdb/connections.py”, 第 381 行,在 show_warnings 中 self.query(“显示警告”)文件“/home/ubuntu/ivs/vpython/lib/python3.6/site-packages/MySQLdb/connections.py”, 第 277 行,查询中 _mysql.connection.query(自我,查询) _mysql_exceptions.OperationalError: (2013, 'Lost connection to MySQL server during query')

是的,我的一个模型具有“assigend_to”字段,这是一个外键。但是为什么会因为 KeyError 而失败呢?

有没有人遇到过类似的 KeyErrors 导致 MySql 失去连接?

【问题讨论】:

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


    【解决方案1】:

    哇,实际发生的事情是这样的:

    1. 我正在使用反向外键进行查询。
    2. 使用反向外键返回的对象包含一些其他外键。
    3. 当我尝试访问它们时,例如'assigned_to' 我每次都遇到这个异常。

    【讨论】:

      【解决方案2】:

      在官方的 MySQL 定义中,有一个 specific page 关于这个错误。从这里可以详细看出,您应该尝试以下方法:

      1. 错误中的“查询期间”术语可能与处理数百万行导致的超时有关。您可以将net_read_timeout 增加到 60 秒等。
      2. 这可能在您尝试初始连接时发生,但在您的情况下这是不可能的。

      【讨论】:

      • 正如你所说的是真的,但这完全不相关。请在下面阅读我的回答。
      猜你喜欢
      • 2018-02-25
      • 2016-05-29
      • 1970-01-01
      • 2012-11-07
      • 1970-01-01
      • 2013-12-11
      • 2021-12-26
      • 2016-08-04
      • 2022-12-09
      相关资源
      最近更新 更多