【问题标题】:NOT NULL constraint failed when running `migrate`运行“迁移”时,NOT NULL 约束失败
【发布时间】:2015-07-22 18:46:02
【问题描述】:

我更改了我的 models.py 文件并在运行 migrate 时收到此错误。该属性是 OneToOneField()。我试过添加null=True,但这似乎并没有解决它。奇怪的是,即使我注释掉该属性并运行makemigrations,然后运行migrate,我仍然得到完全相同的错误。有没有办法来解决这个问题?我的模型如下所示:

class Estimator(Employee):
    avg_estimate = models.IntegerField()


class Job(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    estimator = models.OneToOneField(Estimator, null=True)
    address = models.CharField(max_length=100)
    completed = models.BooleanField(default=False)

【问题讨论】:

  • 请将完整的错误信息添加到您的问题中。
  • 我认为您必须删除该列并通过添加 Null 条件再次添加它

标签: django django-migrations


【解决方案1】:

我的猜测是您创建了一个没有 null=True 的迁移,它不会迁移,然后您创建了一个带有 null=True 的第二个迁移。

运行“迁移”将按顺序运行两个迁移,因此第一个迁移将再次失败。

假设是这样,那么 1:删除迁移文件夹中的两个最新文件。 (首先打开它们以确认它们正在创建迁移,正如我在删除它们之前所描述的那样)。 2:再次运行makemigrations,在你的models.py中使用null=True

这应该会创建第二个迁移文件的等效文件,而不会出现中间迁移失败。

【讨论】:

  • 我自己最近也遇到了同样的问题
猜你喜欢
  • 2015-04-24
  • 2015-04-22
  • 2018-08-24
  • 2022-01-19
  • 2021-11-16
  • 2020-12-18
  • 2021-03-20
  • 2020-02-11
  • 2019-02-13
相关资源
最近更新 更多