Django&南:添加新字段但发生DatabaseError“表已存在”

时间:2012-05-26 20:48:06

标签: python django django-south

在尝试将新字段添加到预先存在的模型/表时,我得到一个“表已存在”的DatabaseError。我在此之前运行了迁移,所以我有点困惑为什么添加一个新字段会弹出这个错误。

执行的命令:

python manage.py schemamigration app --auto
python manage.py migrate app

以前提出的这类问题是通过伪造迁移来解决的。

python manage.py migrate app --fake
python manage.py migrate app

由此产生的问题是未创建列。所以当你运行服务器时,你会看到一个DatabaseError'没有这样的列'。

就我的模型而言,我只添加了一个CharField。

提前感谢您的帮助 -

3 个答案:

答案 0 :(得分:12)

您需要{i}首先而不新字段,然后schemamigration app --initial(或者它返回的迁移号码)将南数据库设置为该状态(已经是表格)创建)。

添加新字段然后运行migrate app --fake 0001然后迁移。

答案 1 :(得分:1)

我注释掉了该字段,运行了schemamigration,然后进行了迁移。取消注释该字段,运行schemamigration,然后迁移并运行。不确定我做错了什么。

答案 2 :(得分:0)

当你在迁移时做某事并且不让南方知道它时会发生这种情况。

如果你查看数据库中的south_ *表,你会发现-south在数据库中保存有关db迁移的日志。常见的方法是伪造迁移。 南方有一个fake论点。

在这里你可以找到所有关于: http://south.readthedocs.org/en/latest/commands.html#options