在我们项目的 master 分支中,我们的一个 django 应用程序的迁移如下所示:
# ...
(*) 0022_datamigration_1
(*) 0023_datamigration_2
(*) 0024_datamigration_3
(*) 0025_datamigration_4
如您所见,这些迁移已经应用到我们的生产系统上。在我的一个分支中,我开发了一个需要大量迁移的功能:
(*) 0022_datamigration_1
( ) 0023_my_schemamigration_1
(*) 0023_datamigration_2
( ) 0024_my_datamigration_1
(*) 0024_datamigration_3
(*) 0025_datamigration_4
( ) 0025_my_datamigration_2
( ) 0026_my_schemamigration_2
# ... some more not yet applied schemamigrations
( ) 0030_my_datamigration_x
这又是生产数据库的“迁移历史”,但由于我在更改 master 时同时处理我的功能,因此已经应用了一些迁移,现在我在历史中存在这些“空白”。南方将通过运行来拒绝应用它们python manage.py migrate my_app
! Migration my_app:0024_datamigration_3 should not have been applied before my_app:0024_my_datamigration_1 but was.
! Migration my_app:0023_datamigration_2 should not have been applied before my_app:0023_my_schemamigration_1 but was.
我怎样才能摆脱那些“迁移差距”(我想我给谷歌提供了错误的关键字)?至少,迁移应该都会影响不同的模型,所以我想有可能以某种方式做到这一点。