首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >南方迁移:删除所有迁移文件(00*_*)并从0001开始,同时保留原始数据

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

Stack Overflow用户
提问于 2015-08-18 14:09:21
回答 1查看 1.6K关注 0票数 5

我正在使用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。

上述程序正确吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-30 16:43:45

对于您的每个应用程序:

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

代码语言:javascript
运行
复制
./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)。删除迁移文件

代码语言:javascript
运行
复制
git rm app/migrations/*

3)创建一个新的迁移文件

代码语言:javascript
运行
复制
./manage.py makemigrations app

4)假装运行新的迁移

代码语言:javascript
运行
复制
./manage.py migrate app --fake

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

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32074791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档