django south 破坏了我的数据库(无法删除约束)

0 投票
1 回答
620 浏览
提问于 2025-04-16 15:19

我想在一个表里添加一个表格和一个外键。最开始我写的是:

class VirtualMachine(models.Model):
    ...

然后我把它改成了:

class OperatingSystem(models.Model):
    name = models.CharField(max_length=40)

    def __unicode__(self):
        return self.name

class VirtualMachine(models.Model):
    operating_system = models.ForeignKey(OperatingSystem, default=1)

我想添加一个条目,让1对应“WindowsXP”。但是South不喜欢这样,所以我把最后一行改成了:

    operating_system = models.ForeignKey(OperatingSystem, null=True)

这样就可以了。完成这个迁移后,我添加了“WindowsXP”的条目,然后又改回:

    operating_system = models.ForeignKey(OperatingSystem, default=1)

我执行了 python manage.py schemamigration app --auto,这个没问题,然后执行 python manage.py migrate app,结果卡住了。卡住了!

我取消了这个操作,然后进入了 psql。我无法执行 SELECT * FROM app_virtualmachine; - 这个操作会一直停在那里,虽然从其他表获取数据没有问题。我甚至连从那张表中选择一列都做不到。我试着删除South添加的约束,但也没用。到底怎么回事?

1 个回答

2

哦,我觉得这个表可能被锁住了什么的。我重启了postgres,然后就可以手动对这个表进行操作,救回它。

撰写回答