我正在使用Django开发Web系统,它们部署在Heroku上。系统投入生产后,必须保留所有数据库数据和迁移文件(即00 * _ *文件)。以下是我执行数据库迁移和部署的过程:
对于第一次部署,请在本地执行Uncaught ReferenceError: MathJax is not defined
并推送到Heroku。
在Heroku上执行manage.py makemigrations
。
如果以后更改模型:
在本地执行manage.py migrate
并推送到Heroku。
在Heroku上执行makemigrations
。
如果更改了模型,则重复步骤3和步骤4。
随着系统的发展,有越来越多的迁移文件。我想知道:在成功迁移和部署之后,我可以删除所有迁移文件并从一个新的文件开始吗?那就是:
对于第一次部署,请在本地执行migrate
并推送到Heroku。
在Heroku上执行makemigration
。
删除所有本地迁移文件。
在本地执行migrate
以创建看似启动的迁移文件。
更改模型:
在本地执行makemigrations
并推送到Heroku。
在Heroku上执行makemigration
。
如果更改模型,将重复步骤3到6。
上述程序是否正确?
答案 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
参数。