挤压django迁移后如何删除它们?

挤压django迁移后如何删除它们?,django,migration,django-migrations,squash,Django,Migration,Django Migrations,Squash,Django文档说我们可以在挤压迁移之后删除它们: 您应该提交此迁移,但保留旧迁移;这个 新迁移将用于新安装。一旦你确定了一切 代码库实例已经应用了您挤压的迁移, 你可以删除它们 这里,删除意味着只删除迁移文件,还是同时删除django_migrations表中的条目 以下是一些背景:我只有开发机器,所以只有一个代码库。在挤压了我已经应用的一些迁移之后,我删除了文件和数据库条目。通过进行迁移来测试这是否正常,但没有发现任何问题。所以,一切看起来都很好。第二天,我不得不改变一些东西,并进行了迁移。

Django文档说我们可以在挤压迁移之后删除它们:

您应该提交此迁移,但保留旧迁移;这个 新迁移将用于新安装。一旦你确定了一切 代码库实例已经应用了您挤压的迁移, 你可以删除它们

这里,删除意味着只删除迁移文件,还是同时删除django_migrations表中的条目


以下是一些背景:我只有开发机器,所以只有一个代码库。在挤压了我已经应用的一些迁移之后,我删除了文件和数据库条目。通过进行迁移来测试这是否正常,但没有发现任何问题。所以,一切看起来都很好。第二天,我不得不改变一些东西,并进行了迁移。当我尝试迁移时,它也尝试应用压缩的迁移(在被压缩之前,它是一部分一部分地应用的)。因此,我必须返回并重新创建django_migrations表中的条目。所以,似乎我必须保留数据库条目。在我再次搞砸任何事情之前,我正在努力确保,并理解为什么它看起来很好,然后尝试应用压缩的迁移

我无论如何都不是专家,但我只是压缩了我的迁移,并最终做了以下工作:

运行此查询以删除旧迁移(挤压)

运行此管理命令以删除重影迁移

./manage.py migrate --fake --delete-ghost-migrations 

Django 1.7也有

压缩迁移从未标记为已应用,这将在1.8.3中修复(请参阅)

删除旧迁移的步骤包括:

  • 确保应用了所有替换的迁移(或没有任何迁移)
  • 删除旧的迁移文件,从压缩的迁移中删除
    replaces
    属性
  • (解决方法)运行
    /manage.py migrate--false

  • 当1.8.3到达时,不需要最后一步

    问题发布后,转换压缩的迁移变得更容易了。我发布了一篇文章,展示了如何使用循环依赖项挤压迁移,还展示了如何在所有安装迁移超过挤压点后将挤压迁移转换为常规迁移

    正如政府所说:

    然后,必须通过以下方式将挤压的迁移转换为正常迁移:

    • 删除它替换的所有迁移文件
    • 将依赖于已删除迁移的所有迁移更新为依赖于压缩迁移
    • 删除压缩迁移的迁移类中的replaces属性(这就是Django告诉它是压缩迁移的方式)

    我应该提到我使用了Django 1.8,所以这不是一个南方迁移。谢谢你的回答。
    ./manage.py migrate --fake --delete-ghost-migrations