Django 如何改变南方移民的顺序
在我的Django 如何改变南方移民的顺序,django,django-south,Django,Django South,在我的store应用程序中,我有大约50次迁移,其中一些是schemamigration和一些datamigration。现在我想在0037\u一些值到对象之前运行0039\u add\u column\u is\u worldwide。因此,我将那里的名称0037\u add\u column\u is\u worldwide和0039\u一些值\u改为\u objects 当我对新数据库执行syncdb时,它工作正常,但在现有数据库中进行新迁移时,会出现此错误 引发异常。不一致的迁移历史记录
store
应用程序中,我有大约50次迁移,其中一些是schemamigration
和一些datamigration
。现在我想在0037\u一些值到对象之前运行0039\u add\u column\u is\u worldwide
。因此,我将那里的名称0037\u add\u column\u is\u worldwide
和0039\u一些值\u改为\u objects
当我对新数据库执行syncdb
时,它工作正常,但在现有数据库中进行新迁移时,会出现此错误
引发异常。不一致的迁移历史记录(问题)
south.exceptions.unconsistentMigrationHistory:不一致的迁移历史
以下选项可用:
--合并:将只尝试迁移,忽略任何潜在的依赖项冲突
我不想丢失我的数据,因此是否有必要更改这些迁移的顺序?迁移在运行时存储在数据库中,因此如果您已经应用了这些迁移,那么将丢失数据。你的选择:
- 刷新迁移表(如果调用migrate,将导致所有迁移再次运行)
- 回滚这些迁移(重命名之前)
- 伪造这些迁移(migrate--false,但数字可能与DB中的数字冲突)
回滚对我来说似乎是最安全的,只是确保项目中的每个人都这样做
如果您仍在开发环境中,并且没有prod数据库,则始终可以从零重新启动:
- 冲洗南部db
- 迁移——伪造
迁移在运行时存储在DB中,因此如果您已经应用了这些迁移,那么将丢失这些迁移。你的选择:
- 刷新迁移表(如果调用migrate,将导致所有迁移再次运行)
- 回滚这些迁移(重命名之前)
- 伪造这些迁移(migrate--false,但数字可能与DB中的数字冲突)
回滚对我来说似乎是最安全的,只是确保项目中的每个人都这样做
如果您仍在开发环境中,并且没有prod数据库,则始终可以从零重新启动:
- 冲洗南部db
- 迁移——伪造
我想您的数据库已经完成了“0037\u一些值到对象”
我会这样做:
删除forward()中的代码和“0037\u一些\u值\u到\u对象”中的其他方法。这种迁移没有任何作用。现在添加两个新迁移
经验法则:如果一个系统进行了迁移,不要删除它。将其设为空。我想您的数据库已经完成了“0037\u一些\u值到\u对象”
我会这样做:
删除forward()中的代码和“0037\u一些\u值\u到\u对象”中的其他方法。这种迁移没有任何作用。现在添加两个新迁移
经验法则:如果一个系统进行了迁移,不要删除它。将其设置为空。在更改迁移名称之前是否将数据库回滚到迁移36?在更改迁移名称之前是否将数据库回滚到迁移36?最终选择了哪种解决方案?最安全的解决方案:)我有prod db,因此刷新将有风险!您最终选择了哪种解决方案?您最安全的解决方案:)我有prod db,因此flush
将有风险!