我在models.py
中进行了很多更改,包括删除了很多字段,并重命名了几个类。 schemamigration --auto
工作正常,但尝试migrate
引发了一堆错误。
我的所有代码目前都在开发中,所以我不介意丢失太多数据。所以我希望南方“不转发”或“取消管理”一个应用程序,这样我就可以再次使用syncdb
重建所有表格。
或者我可以删除所有迁移列表并再次执行schemamigration --initial
。
答案 0 :(得分:11)
是的,只需删除迁移并再次运行schemamigration --initial
即可。在转向生产之前,您应该将其作为正常课程。如果您已经至少进行过一次生产,请不要删除所有迁移 - 只删除您在当前开发周期中创建的迁移,然后运行schemamigration --auto
以获得一次迁移而不是潜在迁移多个。
FWIW,要使用South“转换”应用程序,您只需删除“迁移”目录,但在这种情况下,没有必要。
<强>更新强>
有人指出,如果您已经迁移了应用程序,并且删除了所有迁移并生成了一个新迁移,那么South会抱怨仍然在数据库中进行迁移。您应该遵循的实际流程是:
回滚到您在当前开发周期中创建的最新迁移之前。例如,如果您已经处于0005状态并且为正在进行的开发工作创建了三个新的迁移(现在在0008),那么您将回滚到0005.如果所有迁移都是新的,则回滚到zero
:
python manage.py migrate yourapp zero
删除您要合并的所有迁移。在上面的示例中,这将是0006,0007和0008,或者对于新应用程序,迁移目录中的所有内容都是__init__.py
。
生成新的迁移以涵盖您刚刚删除的迁移。如果是新应用,请使用--initial
,或者如果它是预先存在的应用,请使用--auto
。
python manage.py schemamigration --initial yourapp
迁移
python manage.py migrate yourapp