南迁移:删除所有迁移文件(00 * _ *)并从0001开始,同时保留原始数据

时间:2015-08-18 14:09:21

标签: heroku deployment migration django-south

我正在使用Django开发Web系统,它们部署在Heroku上。系统投入生产后,必须保留所有数据库数据和迁移文件(即00 * _ *文件)。以下是我执行数据库迁移和部署的过程:

  1. 对于第一次部署,请在本地执行Uncaught ReferenceError: MathJax is not defined并推送到Heroku。

  2. 在Heroku上执行manage.py makemigrations

  3. 如果以后更改模型:

    1. 在本地执行manage.py migrate并推送到Heroku。

    2. 在Heroku上执行makemigrations

    3. 如果更改了模型,则重复步骤3和步骤4。

      随着系统的发展,有越来越多的迁移文件。我想知道:在成功迁移和部署之后,我可以删除所有迁移文件并从一个新的文件开始吗?那就是:

      1. 对于第一次部署,请在本地执行migrate并推送到Heroku。

      2. 在Heroku上执行makemigration

      3. 删除所有本地迁移文件。

      4. 在本地执行migrate以创建看似启动的迁移文件。

      5. 更改模型:

        1. 在本地执行makemigrations并推送到Heroku。

        2. 在Heroku上执行makemigration

        3. 如果更改模型,将重复步骤3到6。

          上述程序是否正确?

1 个答案:

答案 0 :(得分:3)

对于您的每个应用:

1)假装回滚所有现有迁移:

./manage.py migrate app zero --fake

zero参数表示我们回滚到第一次迁移。您可以通过运行./manage.py migrate app --list确认已回滚所有迁移。 --fake选项表示我们不应该实际运行迁移,但仍会将迁移标记为已运行:https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---fake

2)。删除迁移文件

git rm app/migrations/*

3)创建新的迁移文件

./manage.py makemigrations app

4)假装运行新的迁移

./manage.py migrate app --fake

与1)中一样,步骤4)实际上并不运行迁移。

编辑:添加了一些解释并修复了zero参数。