【问题标题】:Can I deploy to Heroku without destroying existing database? Ruby on Rails我可以在不破坏现有数据库的情况下部署到 Heroku 吗? Ruby on Rails
【发布时间】:2015-03-01 17:26:34
【问题描述】:

我对我的应用进行了相当大的升级。我目前在 Heroku 上部署了旧版本。问题是我在使我的应用程序更加模块化的过程中添加/删除了相当多的迁移。我不想在部署更新时丢失已经在 Heroku 上的注册用户表。有人可以提供有关如何在升级应用程序时保留我的用户表的任何提示吗?我确实安装了备份插件,但我不知道如何处理该文件。

【问题讨论】:

    标签: ruby-on-rails database heroku deployment migration


    【解决方案1】:

    如果您对部署如此担心,我认为您可能需要宣布迁移破产。

    • 创建一个新的迁移,删除当前架构并将新的数据库架构复制到其中
    • 将数据库内容转储为 CSV (https://coderwall.com/p/jwtxjg/simple-export-to-csv-with-postgres) 或使用 Rails 以其他方式(YAML 等)转储
    • 编写 Rake 任务以将数据转储解析到新架构中
    • 在 Heroku Postgres 上设置新数据库(这不会删除旧数据)
    • 在本地进行试运行以确保一切正常
    • 将新数据库提升到 DATABASE_URL
    • 部署、迁移、运行 Rake 任务

    不是很好,如果出现问题,您也不能轻易回滚。

    【讨论】:

      【解决方案2】:

      然后你应该更仔细地设置你的迁移,因为那是最后一次出现在 heroku 服务器上的。所以,当:

      1. 您正在添加一列,只需设置默认值

      2. 您删除列,将数据导出到(例如)YAML,并将其存储在 tmp/ 中。

      3. 您正在通过添加和删除部分列来重建部分列,在迁移过程中小心地将所需数据从旧列(准备删除)复制到新创建的列。

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2017-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-30
        • 2010-10-23
        • 2013-05-25
        相关资源
        最近更新 更多