【问题标题】:How to merge multiple django south migrations into one migration如何将多个 django 南迁移合并为一个迁移
【发布时间】:2014-09-17 03:34:31
【问题描述】:

我们长期使用 south 来管理迁移,现在我们有大约 100 多个迁移。

导致在新数据库上运行 python manage.py migrate 很长时间。

我想知道是否可以将所有现有迁移合并到一个迁移

【问题讨论】:

标签: django-south


【解决方案1】:

这已经在 Django 1.7 + 中解决了,有一个新的管理命令 ./manage.py squashmigrations appname ,查看这个链接 - https://docs.djangoproject.com/en/1.7/topics/migrations/#squashing-migrations

【讨论】:

    【解决方案2】:

    您可以使用squashmigrations 管理命令到达那里。它会保留旧的迁移文件,但在安装新文件时使用压缩版本。

    例子:

    ./manage.py squashmigrations core 0003_auto
    

    official docs

    如果您希望摆脱在开发过程中产生的所有试错浪费,请从您的应用程序 migrations 目录中删除迁移,以及 SQL 表 django_migrations 中所有提及您的应用程序以及应用程序实际数据库表。

    然后运行./manage.py makemigrations,你就可以开始了。对于已经投入生产的应用,不建议这样做。

    【讨论】:

    • 修改数据库本身(如“......以及在 SQL 表 django_migrations 中提及您的应用程序的所有提及”)有什么作用?在开发过程中,我运行makemigrations 来测试一些东西,对某个字段进行了小幅调整,然后再次运行它。当然,我最终进行了两次迁移,这对于一次存储库提交来说似乎很糟糕。但是,仅删除这两个文件并运行makemigrations(没有提及任何清理数据库)似乎可以很好地解决它。还是我搞砸了一些微妙的事情?
    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 2021-09-20
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-21
    相关资源
    最近更新 更多