【发布时间】:2018-03-21 12:44:18
【问题描述】:
我在 Django 的 IntegrityError 中缺少表名:
Traceback (most recent call last):
...
return self.cursor.execute(sql, params)
File ".../django/db/utils.py", line 94, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File ".../django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
IntegrityError: null value in column "manager_slug" violates not-null constraint
DETAIL: Failing row contains (17485, null, 2017-10-10 09:32:19, , 306).
有没有办法查看 INSERT/UPDATE 正在访问哪个表?
我们使用 PostgreSQL 9.6。
这是一个通用问题:如何获得更好的错误信息?
这不是关于这个特定专栏的问题。我很快就找到了相关的表格和列。但我想改进来自我们 CI 系统的错误消息。下次我想立即看到表名。
我知道,如果我在软件开发过程中看到此错误,我可以使用调试器轻松揭示缺失的信息。但在我的情况下,这发生在生产中,我只有上面的堆栈跟踪。
【问题讨论】:
-
分享你的模型
-
@Shaonshaonty 没有必要分享我的模型。这是一个通用问题:如何获得更好的错误信息?这不是关于这个特定专栏的问题。
-
也许我遗漏了一些东西,但堆栈跟踪不会显示您正在操作的 Django 模型吗?例如,如果模型的
save()方法是触发异常的原因,那么它将出现在您的堆栈跟踪中。 -
在我的情况下,我删除了迁移文件,然后再次进行了 makemigrations,一切都对我有用。
-
@TejasTank 您没有阅读/理解这一点:这是一个通用问题:如何获得更好的错误消息?这不是关于这个特定专栏的问题。
标签: python django postgresql django-orm