Postgresql 使用Keter重新部署Yesod应用程序,而不重新创建数据库

Postgresql 使用Keter重新部署Yesod应用程序,而不重新创建数据库,postgresql,haskell,yesod,Postgresql,Haskell,Yesod,我正在用YesSOD编写我的第一个应用程序,我已经把它发展到一个可以正常工作的状态,但我想继续给它添加一些小东西。到目前为止,每次我通过交换新包来重新部署keter时,都会为该应用程序重新创建数据库。我如何才能重新部署而不产生这种效果?我对博士后不是很熟悉,所以一个变通办法也很好 编辑:我还用SQLite构建了它,如果这有什么不同的话。我已经到处找了,但还是没弄明白 我最终得出的答案是,如果数据是用Sq-lite搭建的,我就无法让它保留数据。与公认的答案相反,你实际上可以做到这一点。在sqlit

我正在用YesSOD编写我的第一个应用程序,我已经把它发展到一个可以正常工作的状态,但我想继续给它添加一些小东西。到目前为止,每次我通过交换新包来重新部署keter时,都会为该应用程序重新创建数据库。我如何才能重新部署而不产生这种效果?我对博士后不是很熟悉,所以一个变通办法也很好


编辑:我还用SQLite构建了它,如果这有什么不同的话。我已经到处找了,但还是没弄明白

我最终得出的答案是,如果数据是用Sq-lite搭建的,我就无法让它保留数据。

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

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

Production:
  database: /opt/keter/database/HsCMS_production.sqlite3
  poolsize: 100
  <<: *defaults
生产:
数据库:/opt/keter/database/HsCMS_production.sqlite3
游泳池人数:100

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