django - 是否可以在部署在 heroku 上的应用程序上重置 django 迁移?

标签 django heroku

我已经将 django 应用程序部署到 heroku,但我需要重置这些迁移。如果不删除整个项目并重新部署它是否可能?我在该数据库中有一些测试数据,我不想重新输入这些数据。

我想删除所有迁移文件并创建新文件。事情是,我从我的本地机器上删除了所有迁移文件并创建了新的,所以现在我本地机器上的迁移文件都是 001。将它推送到 heroku 说没有任何变化,因为那里已经存在 001 迁移文件。只有删除它们才有效。基本上类似于

find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete

但对于 heroku。

最佳答案

推送到 Heroku 是解决方案的一部分,但不是全部。这会更新迁移文件,但不会更新数据库中的 django_migrations 表。

  1. 如果您仍然在 Heroku 上运行旧代码:

    1. 备份你的数据库

    2. 撤消所有迁移:

      heroku run python manage.py migrate appname zero
      
    3. 然后部署您的新代码:

      git push heroku master
      
    4. 然后运行新的迁移:

      heroku run python manage.py migrate
      
  2. 如果您已经将新代码部署到 Heroku:

    1. 备份你的数据库

    2. 从数据库中手动删除应用的表,以及 django_migrations 表中 app 与您的应用名称匹配的行,例如通过heroku pg:psql (如果您安装了其他应用程序和应用程序间依赖关系,这可能会变得棘手)

    3. 运行您的新迁移:

      heroku run python migrate
      

如果您已经部署了新代码,另一个可能更安全的选项是 rollback到反射(reflect)您的数据库架构的版本,然后使用上面的选项 1。在这种情况下,您可以再次回滚到新版本,而不是进行常规发布。

关于django - 是否可以在部署在 heroku 上的应用程序上重置 django 迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54779233/

相关文章:

python - 我总是收到在分配之前引用局部变量的错误!我该如何解决?

python - 如何使用 Django 模型中的函数迭代 SQL 数据库?

python - Django 检索 S3 存储桶中的文件列表

heroku - 已成功上传到 Heroku Local,但在推送到 Heroku live 时出现 503 错误

ruby-on-rails - 不接受从 Heroku 上的 Rails 发送到 HostedGraphite 的 UDP 数据包

python - 在 Django rest 框架中处理请求 header 以获取 header 中传递的 key ?

heroku - heroku推送被拒绝,无法编译Python应用

node.js - Godaddy 转发到 Heroku 会导致 SSL 问题

heroku - 'Non-persistent' 对 Heroku 的 Redis To Go Nano 计划意味着什么?

python - django-haystack 教程中模型的哪些字段被索引?