django调试工具栏显示SQL为None

时间:2019-01-04 18:48:29

标签: django django-debug-toolbar

我们在两个经过重新处理的应用程序上使用django-debug-toolbar,一个服务于我们的传统django应用程序,另一个服务于我们的更新API。最近,API上的调试工具栏已将SQL查询显示为“无”(请参见截屏) enter image description here

另一个应用程序按预期运行。

debug-toolbar附带的debugsqlshell也将查询报告为None:

In [8]: user = User.objects.last()
None [0.85ms]

In [9]: 

而不是按预期方式显示查询,如此处所示(在旧版应用程序一侧工作):

In [3]: user = User.objects.last()
SELECT @@SQL_AUTO_IS_NULL [1.96ms]
SELECT `auth_user`.`id`,
       `auth_user`.`password`,
       `auth_user`.`last_login`,
       `auth_user`.`is_superuser`,
       `auth_user`.`username`,
       `auth_user`.`first_name`,
       `auth_user`.`last_name`,
       `auth_user`.`is_staff`,
       `auth_user`.`is_active`,
       `auth_user`.`date_joined`,
       `auth_user`.`email`
FROM `auth_user`
ORDER BY `auth_user`.`id` DESC
LIMIT 1 [10.00ms]

In [4]: 

我检查了一些明显的东西。

  • 受影响的应用程序和 特别是,中间件没有以任何方式重新排序,这 似乎是问题的潜在原因。
  • debug-toolbar最近没有更新,并且更新了 debug-toolbar到当前版本不影响这种情况。
  • 我能够使用CaptureQueriesContext(来自 django.test.utils)在测试环境中运行,但不在 debugsqlshell。

我目前正试图找出历史上的突破点。对于潜在原因的任何建议,以帮助定位和解决此问题,我们将不胜感激。

2 个答案:

答案 0 :(得分:2)

我在django调试工具栏上遇到了同样的问题。 我将mysqlclient从1.3.14降级到1.3.13,现在可以正常工作了。

答案 1 :(得分:1)

来自GitHub的人建议将Django更新到v2.1.5。 通常,升级比降级是更好的解决方案。它对我有用。

stuartd