【问题标题】:Redeploy Yesod app with Keter without recreating database使用 Keter 重新部署 Yesod 应用程序而不重新创建数据库
【发布时间】:2014-02-01 07:37:46
【问题描述】:

我正在使用 Yesod 编写我的第一个应用程序,并且我已经将它运行到了可以运行的状态,但我想继续向它添加一些小东西。到目前为止,每次我通过交换新包重新部署 keter 时,都会为该应用程序重新创建数据库。如果没有这种影响,我该如何重新部署?我对 postgres 不是很熟悉,所以解决方法也很好。

编辑:我还用 SQLite 搭建了它,如果这有什么不同的话。我一直在寻找,仍然无法弄清楚这一点。

【问题讨论】:

  • 您是在重新部署同名还是不同名称的应用程序? Keter 根据 Keter 包的名称跟踪数据库,所以如果你不断重命名它,肯定会创建一个新的数据库。
  • 我一直在使用相同的包名称,但我通常会从应用程序的不同基本位置换入 Keter 包。不过,我刚刚意识到我仍然有应用程序在 makeFoundation 中调用 Database.Persist.Store.runPool dbconf (runMigration migrateAll) p

标签: postgresql haskell yesod


【解决方案1】:

与公认的答案相反,您实际上可以这样做。在 sqlite.yml 配置中,您只需将路径设置为它可以访问的位置。

我当前的设置是,我在 /opt/keter/database 创建了一个文件夹,然后我的生产配置是,

Production:
  database: /opt/keter/database/HsCMS_production.sqlite3
  poolsize: 100
  <<: *defaults

这将使数据库在部署中保持持久性。您应该注意,当您更改数据库时,它仍然需要进行迁移。

【讨论】:

    【解决方案2】:

    我最终想通的答案是,如果使用 Sql-lite 搭建脚手架,我无法让它保留数据。

    【讨论】:

      猜你喜欢
      • 2014-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 2017-02-28
      • 1970-01-01
      • 2016-09-14
      • 1970-01-01
      相关资源
      最近更新 更多