【问题标题】:Django 1.8 Squashing migrationsDjango 1.8 压缩迁移
【发布时间】:2015-11-12 04:07:54
【问题描述】:

我对 Django 1.8 中的 Squashing 有一些疑问。我已将一些迁移文件压缩为一个,但不太确定如何执行 djangoprojects 文档中指定的 2 个操作。

完成此操作后,您必须将压缩的迁移转换为正常的初始迁移,方法是:

-删除它替换的所有迁移文件

-删除压缩迁移的 Migration 类中的 replaces 参数(这是 Django 告诉它是压缩迁移的方式)

  1. 是否只使用普通的rm命令删除迁移文件中的迁移文件?
  2. 我是否只是 vim 迁移文件“0001_squashed_xxx”并删除部分“replaces = []”?
  3. 另外,在我运行压缩迁移后,迁移(原来是 0010)自动变成了 0001。这是预期的行为吗?

任何帮助都会很棒。谢谢!

【问题讨论】:

    标签: django migration psql


    【解决方案1】:
    1. 是否只使用普通的rm命令删除迁移文件中的迁移文件?
    2. 我是否只是 vim 迁移文件“0001_squashed_xxx”并删除部分“replaces = []”?

    是的,是的,但只有在您在所有生产站点上运行压缩迁移之后。 此外,您应该确保您的其他迁移都不依赖于您将要删除的迁移。如果是这样,您应该将这些依赖项更改为指向相应的压缩迁移。

    1. 另外,在我运行压缩迁移后,迁移(原来是 0010)自动变成了 0001。这是预期的行为吗?

    这是因为压缩迁移被命名为 <start_migration>_squashed_<end_migration>。因此,如果您从0001_initial 压缩到0010_blah,压缩后的迁移将具有名称0001_initial_squashed_0010_blah,因此其代码将以0001 开头。但是编号并没有真正的意义,它只是为了让您的迁移在目录中列出时得到很好的排序。

    【讨论】:

    • 谢谢。忘记了这个问题。我现在已经通过使用 3 个步骤多次完成此操作。到目前为止没有问题。我想这是压制迁移的正确方法。无论如何谢谢 jarekwg!
    猜你喜欢
    • 2016-06-14
    • 2015-09-08
    • 2015-11-24
    • 2015-06-16
    • 1970-01-01
    • 2021-01-13
    • 2017-02-23
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多