2016-10-14 86 views
0

我有一个定制的迁移:Django的不应用迁移

class Migration(migrations.Migration): 

    dependencies = [('blah', 'my_previous_migration'),] 

    operations = [ 
     migrations.RunSQL(
      sql=[("SQL HERE")], 
      reverse_sql=[("SQL UNDO HERE")]) 
    ] 

这种迁移已经应用。我想创建一个迁移撤消迁移,基本上下面的文档说什么:unapply migration

但我不能找到如何取消应用迁移或有任何迁移参考运行迁移的reverse_sql部分。

+0

是迁移代码段局部应用或你已经与公众共享此/项目还是生产? – dahrens

+0

它已经在生产,这就是为什么我需要一个迁移来撤消这个。 – PepperoniPizza

回答

1

让我们叫的片段accident和附加一个fix

当编写自定义的SQL迁移通常应提供反向部分否则你无法回滚到以前的状态而不会丢失你的架构和/或数据的完整性。

accident应提供SQL恢复本身。应该由此回滚accidentfix包括两个操作互换。

您可能需要阅读about squashing migrations之后。

编辑:术语操作可能会通过,因为它是迁移系统的一部分:)混乱 - 会说:在fix迁移交换sqlreverse_sql