感谢多米尼克瓜迪奥拉和霍布斯的回答,它帮助我解决了一个难题。但是,该解决方案存在一些问题,这是我的看法。
例如,如果您有任何使用 South 的第三方应用程序(基本上所有应用程序都使用 South) ,则使用manage.py reset south
不是一个好主意。django-cms
reset south
将删除您已安装的所有应用程序的所有迁移历史记录。
现在考虑升级到最新版本django-cms
,它将包含新的迁移,例如0009_do_something.py
. 0001
当您尝试在未完成0008
迁移历史的情况下运行该迁移时,South 肯定会感到困惑。
仅选择性地重置您正在维护的应用程序会更好/更安全。
首先,确保您的应用程序在磁盘上的迁移和已在数据库上执行的迁移之间没有任何不同步。不然会头疼。
1. 删除我的应用程序的迁移历史记录
sql> delete from south_migrationhistory where app_name = 'my_app';
2. 删除我的应用程序的迁移
$ rm -rf my_app/migrations/
3. 为我的应用创建新的初始迁移
$ ./manage.py schemamigration --initial my_app
4. 假执行我的应用程序的初始迁移
这将迁移插入south_migrationhistory
而不接触实际表:
$ ./manage.py migrate --fake my_app
第 3 步和第 4 步实际上只是manage.py convert_to_south my_app
.