如何在Django上使用South执行向后迁移?
因此,我调整了模型,使用进行了迁移schemamigration,使用进行了迁移migrate,现在我意识到这并不是我想要的,并且我想回到以前的样子。
除了手动编辑数据库表和删除迁移文件之外,我应该如何回滚迁移?我找到了通过Google通过South使用向后迁移的参考,但尚未找到可靠的代码示例。
有人可以帮忙吗?
你需要在要回滚的迁移之前弄清楚迁移的数量。
你的应用程序应该有一个迁移目录,其中的文件名为
0000_initial.py 0001_added_some_fields.py 0002_added_some_more_fields.py 0003_deleted_some_stuff.py
通常,当你运行时./manage.py migrate your_app,South会按顺序运行所有新迁移。(它查看数据库表以确定哪些是“新的”)。
./manage.py migrate your_app,South
但是,你也可以按数字指定任何迁移,South会向前或向后迁移数据库,以实现这一点。因此,在上面的示例文件中,如果你已经迁移到0003,并且想要反向运行0003(有效地撤消它),则可以运行
./manage.py migrate your_app 0002
South将查看该数据库,意识到它已经运行了0003,并确定它必须对0003运行反向迁移才能返回到0002。
以防万一(像我一样)想知道如何从初始(0001)迁移回去:
django-admin.py migrate some_app zero
输出:
Running migrations for some_app: - Migrating backwards to zero state. < some_app:0001_initial
“零”是任何迁移之前的特殊状态。