我有一个Django项目,我做了以下工作:
当我做一个migrate
的时候,一切都很好。在表上创建了新的db列,并填充了值。
然而,当我试图运行测试时,我现在在上面的第2步就爆炸了。当我插入的时候,我相信它期望这个字段在那里,即使它还没有在那个时候被创建。
我该怎么办?
编辑:更多信息
我首先创建了一个类,类a,然后做了一个迁移来创建表。然后我对我的数据库进行了测试。然后我编写了一个手动迁移来填充一些我知道会存在的数据。我反对db。后来我意识到我需要在模型上加一个字段。我添加了该字段并进行了迁移,然后对数据库运行它。一切正常,我确认新的专栏在数据库中。
现在,我去做测试了。当它试图运行我编写的populate data script时,它试图创建测试数据库,结果失败了,说“1054-Unknown column[我添加到现有表中的新列]”。它可能会查看表,注意到模型中存在第三个字段,但数据库中还没有,但我不知道如何做得更好。
除非新列定义了默认值,否则insert语句将希望向该列添加数据。您能在第二次迁移之后移动数据负载吗。(我本想发表评论,但还没有足够的声誉。)
我认为这是因为迁移脚本被调用的顺序不对,因为我设置它们时遇到了一个问题。现在一切都好了。
这发生在我身上,因为我伪造了一个迁移(m1),创建了另一个迁移(m2),然后在我伪造了初始迁移(m1)之前尝试迁移m2。
所以在我的例子中,我必须
migrate --fake <app name> m1
,然后migrate <app name> m2
。相关问题 更多 >
编程相关推荐