所以,更详细一点,我有一个模型,其字段如下:permalink = models.IntegerField(default=0)
我实际上并没有使用这个字段 - 但现在想。
但是,似乎所有2000款型号上的所有型号permalink
现在都是57295730
!
在尝试调试时,我尝试完全擦除数据库,运行migrate
(~100次迁移) - 但随后创建了模型的实例,我被告知permalink violates the not-null constraint
尽管我肯定在通过这是一个价值!我还得到了传递它的值的列表,但我不知道如何知道哪个值/列与哪个字段相关?
我甚至尝试删除数据库,删除迁移,运行新的makemigrations
- 并仍然获得空违规...
更奇怪的是,看起来这个领域自初次迁移以来还没有被触及!
migrations$ egrep permalink *
0001_initial.py: ('permalink', models.IntegerField(default=0)),
migrations$
我正在运行(k)ubuntu 14.04
,postgres 9.3
,python 3.4
,django 1.9.4
虽然我很想知道如何解决这个问题 - 我的问题是真的"我可以做些什么来调试这种情况?"
答案 0 :(得分:0)
那不是我想要的答案 - 但是一个有效的答案:
如果你没有做上述事情......
使用git bisect
(或者,如果您不能,请手动使用git reset --hard HEAD~1
来查找问题!)
在我的案例中,我以愚蠢的方式超越了模特的保存功能!
编辑:
更详细一点,我将permalink
设置为比当前最大值大1 - 但在之前的提交中,删除了+ 1
但是,我没有快速注意到这个错误,因为数据库中没有数据。
原来如此!错误实际上是非常有用的 - 如果我经常运行我的测试(或使用CI)我会立即被告知错误,并且让我自己很头疼!
所以,简而言之:**写测试,运行它们 - 自动 **