Django 1054-字段lis中的未知列

2024-05-15 03:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django项目,我做了以下工作:

  1. 添加了一个包含一些列的表
  2. 在数据库中插入一些记录
  3. 添加了一个我没有意识到我需要的新专栏
  4. 更新以填充该列

当我做一个migrate的时候,一切都很好。在表上创建了新的db列,并填充了值。

然而,当我试图运行测试时,我现在在上面的第2步就爆炸了。当我插入的时候,我相信它期望这个字段在那里,即使它还没有在那个时候被创建。

我该怎么办?

编辑:更多信息

我首先创建了一个类,类a,然后做了一个迁移来创建表。然后我对我的数据库进行了测试。然后我编写了一个手动迁移来填充一些我知道会存在的数据。我反对db。后来我意识到我需要在模型上加一个字段。我添加了该字段并进行了迁移,然后对数据库运行它。一切正常,我确认新的专栏在数据库中。

现在,我去做测试了。当它试图运行我编写的populate data script时,它试图创建测试数据库,结果失败了,说“1054-Unknown column[我添加到现有表中的新列]”。它可能会查看表,注意到模型中存在第三个字段,但数据库中还没有,但我不知道如何做得更好。


Tags: 数据项目django模型信息数据库编辑db
3条回答

除非新列定义了默认值,否则insert语句将希望向该列添加数据。您能在第二次迁移之后移动数据负载吗。(我本想发表评论,但还没有足够的声誉。)

我认为这是因为迁移脚本被调用的顺序不对,因为我设置它们时遇到了一个问题。现在一切都好了。

这发生在我身上,因为我伪造了一个迁移(m1),创建了另一个迁移(m2),然后在我伪造了初始迁移(m1)之前尝试迁移m2

所以在我的例子中,我必须migrate --fake <app name> m1,然后migrate <app name> m2

相关问题 更多 >

    热门问题