3

在尝试将新字段添加到预先存在的模型/表时,我得到一个带有“表已存在”的 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 'no such column'。

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

在此先感谢您的帮助-

4

3 回答 3

12

您需要schemamigration app --initial首先不使用新字段,然后migrate app --fake 0001(或它返回的任何迁移编号)将南数据库设置为该状态(已创建表)。

添加新字段,然后运行schemamigration myapp --auto然后迁移。

于 2012-05-26T20:56:02.317 回答
1

我注释掉了该字段,运行了架构迁移,然后迁移。取消注释该字段,运行架构迁移,然后迁移并且它工作。不知道我做错了什么。

于 2012-05-26T21:07:54.793 回答
0

当您在迁移方面做了一些事情并且没有让南方知道这件事时,就会发生这种情况。

如果您查看数据库中的 south_* 表,您会发现 south 在数据库中保留了有关数据库迁移的日志。常见的方法是伪造迁移。南方有fake说法。

在这里您可以了解全部内容: http ://south.readthedocs.org/en/latest/commands.html#options

于 2012-05-27T10:37:48.793 回答