我正在使用Django开发web系统,它们部署在Heroku上。系统投产后,必须保留所有数据库数据和迁移文件(即00*_*文件)。下面是我执行数据库迁移和部署的过程:
manage.py makemigrations
并推送到Heroku。manage.py migrate
。如果模型稍后被更改:
makemigrations
并推送到Heroku。migrate
。如果更改模型,则重复步骤3和步骤4。
随着系统的发展,迁移文件越来越多。我想知道:在成功的迁移和部署之后,我能删除所有的迁移文件并像一个新的文件一样开始吗?这就是:
makemigration
并推送到Heroku。migrate
。makemigrations
以创建看似启动的迁移文件。变革模式:
makemigration
并推送到Heroku。migrate
。如果更改模型,则重复步骤3至6。
上述程序正确吗?
发布于 2015-09-30 16:43:45
对于您的每个应用程序:
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
参数。
https://stackoverflow.com/questions/32074791
复制相似问题