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

South migration: delete all migration files (00*_*) and start from 0001, while keeping the original data

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

  1. 首次部署,在本地执行manage.py makemigrations并推送到Heroku。

  2. 在 Heroku 上执行 manage.py migrate

如果以后更改模型:

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

  2. 在 Heroku 上执行 migrate

如果模型发生变化,则重复步骤 3 和 4。

随着系统的发展,迁移文件越来越多。我想知道:迁移部署成功后,是否可以删除所有迁移文件并重新开始?即:

  1. 首次部署,在本地执行makemigration并推送到Heroku。

  2. 在 Heroku 上执行 migrate

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

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

更改模型:

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

  2. 在 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 参数。