【问题标题】:AttributeError: 'Query' object has no attribute 'explain_query'AttributeError: \'Query\' 对象没有属性 \'explain_query\'
【发布时间】:2022-10-08 09:57:28
【问题描述】:

当我尝试启动服务器或运行“makemigrations”时,我似乎收到了错误消息。

任何人都可以指出什么可能是错的?

我正在使用 Django 4.0。

Traceback (most recent call last):
  File "manage.py", line 24, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 460, in execute
    output = self.handle(*args, **options)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\base.py", line 98, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\management\commands\makemigrations.py", line 119, in handle
    loader.check_consistent_history(connection)
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\migrations\loader.py", line 313, in check_consistent_history
    applied = recorder.applied_migrations()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\migrations\recorder.py", line 82, in applied_migrations
    return {
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 320, in __iter__
    self._fetch_all()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 1507, in _fetch_all
    self._result_cache = list(self._iterable_class(self))
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 57, in __iter__
    results = compiler.execute_sql(
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\sql\compiler.py", line 1348, in execute_sql
    sql, params = self.as_sql()
  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sql_server\pyodbc\compiler.py", line 294, in as_sql
    if self.query.explain_query:
AttributeError: 'Query' object has no attribute 'explain_query'

【问题讨论】:

    标签: python


    【解决方案1】:

    我在尝试升级到 Django 4 时也遇到了这个问题。事实证明,今天 django-mssql-backend==2.8.1 似乎与 Django 4 不兼容。

    不过,看起来有一个开放的错误报告和补丁可以解决这个问题。

    错误报告: https://github.com/ESSolutions/django-mssql-backend/issues/125

    提交/拉取请求: https://github.com/ESSolutions/django-mssql-backend/pull/126

    需求文件调整可能如下所示:

    # django-mssql-backend==2.8.1 has a bug that is incompatible with Django 4.0.5
    # the below commit directly resolves the conflict and should be removed when mainstreamed
    git+https://github.com/ESSolutions/django-mssql-backend.git@b23d305#egg=django-mssql-backend
    

    除了 explain_query 之外,可能还发现了其他不兼容问题。

    【讨论】:

      【解决方案2】:

      我通过安装 django-pyodbc-azure 解决了它

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      相关资源
      最近更新 更多