南迁:删除所有迁徙文件(00*_*),从0001开始,同时保留原数据
South migration: delete all migration files (00*_*) and start from 0001, while keeping the original data
我正在使用 Django 开发 Web 系统,它们部署在 Heroku 上。系统上线后,需要保留所有数据库数据和迁移文件(即00*_*文件)。以下是我执行数据库迁移和部署的过程:
首次部署,在本地执行manage.py makemigrations
并推送到Heroku。
在 Heroku 上执行 manage.py migrate
。
如果以后更改模型:
在本地执行makemigrations
并推送到Heroku。
在 Heroku 上执行 migrate
。
如果模型发生变化,则重复步骤 3 和 4。
随着系统的发展,迁移文件越来越多。我想知道:迁移部署成功后,是否可以删除所有迁移文件并重新开始?即:
首次部署,在本地执行makemigration
并推送到Heroku。
在 Heroku 上执行 migrate
。
删除所有本地迁移文件。
在本地执行makemigrations
以创建看似启动的迁移文件。
更改模型:
在本地执行makemigration
并推送到Heroku。
在 Heroku 上执行 migrate
。
如果模型发生变化,则重复步骤 3 到 6。
以上步骤是否正确?
对于您的每个应用:
1) 假装回滚所有现有迁移:
./manage.py migrate app zero --fake
zero
参数表示我们回滚到第一次迁移。您可以确认所有迁移都已被 运行ning ./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
参数。
我正在使用 Django 开发 Web 系统,它们部署在 Heroku 上。系统上线后,需要保留所有数据库数据和迁移文件(即00*_*文件)。以下是我执行数据库迁移和部署的过程:
首次部署,在本地执行
manage.py makemigrations
并推送到Heroku。在 Heroku 上执行
manage.py migrate
。
如果以后更改模型:
在本地执行
makemigrations
并推送到Heroku。在 Heroku 上执行
migrate
。
如果模型发生变化,则重复步骤 3 和 4。
随着系统的发展,迁移文件越来越多。我想知道:迁移部署成功后,是否可以删除所有迁移文件并重新开始?即:
首次部署,在本地执行
makemigration
并推送到Heroku。在 Heroku 上执行
migrate
。删除所有本地迁移文件。
在本地执行
makemigrations
以创建看似启动的迁移文件。
更改模型:
在本地执行
makemigration
并推送到Heroku。在 Heroku 上执行
migrate
。
如果模型发生变化,则重复步骤 3 到 6。
以上步骤是否正确?
对于您的每个应用:
1) 假装回滚所有现有迁移:
./manage.py migrate app zero --fake
zero
参数表示我们回滚到第一次迁移。您可以确认所有迁移都已被 运行ning ./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
参数。