在尝试将新字段添加到预先存在的模型/表时,我得到一个“表已存在”的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。
提前感谢您的帮助 -
答案 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