2012-05-26 26 views
3

在试图向已有模型/表添加新字段时,我得到一个DatabaseError,其中'表已存在'。我在这之前运行过迁移,所以我有点困惑为什么添加一个新字段会弹出这个错误。执行Django&South:添加新字段,但DatabaseError发生“表已存在”

命令:

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

上一页SO类似这样的问题进行了回答伪造迁移。

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

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

据我的模型,我只是添加一个CharField。

预先感谢您的帮助 -

+0

我注释掉场,跑了schemamigration,然后迁移。取消注释,运行schemamigration,然后迁移并运行。不知道我做错了什么:/ – Emile

回答

12

你需要做的第一schemamigration app --initial没有新的领域,然后migrate app --fake 0001(或任何迁移数量也返回)到南部数据库设置为已创建状态(表)。

添加新的领域,然后运行schemamigration myapp --auto然后迁移。

+0

这对我有用。似乎正确的答案! –

+0

你救我一命...感谢 – Armance

+0

这是我正在寻找的答案。一直在这里挠我的头! – Ciaran

1

我评论了该领域,运行schemamigration,然后迁移。取消注释,运行schemamigration,然后迁移并运行。不知道我做错了什么。

0

这种情况发生在你对移民进行某些操作时并没有让南方知道它。

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

在这里你可以找出什么是一回事: http://south.readthedocs.org/en/latest/commands.html#options

相关问题