【问题标题】:Play 2.5 - slick: Database connection with herokuPlay 2.5 - slick:与 heroku 的数据库连接
【发布时间】:2016-10-14 08:41:13
【问题描述】:

这是我第一次在 Heroku 上部署 Play 应用(使用 slick)。一切运行良好,但在一段时间不活动后,我存储在 数据库中的所有数据都消失了...

在 heroku 中,我有 Heroku Postgres 附加组件和 plan Hobby Dev。也许是因为这个计划?

还是因为我的配置?

我的“Procfile”:

web: target/universal/stage/bin/square-it-wtf -Dhttp.port=${PORT} -Dplay.evolutions.db.default.autoApply=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=${DATABASE_URL}

来自 application.conf 的我的数据库配置:

slick.dbs.default.driver="slick.driver.H2Driver$"
slick.dbs.default.db.driver=org.h2.Driver
slick.dbs.default.db.url="jdbc:h2:mem:play;DB_CLOSE_DELAY=-1"

db.default.driver=org.postgresql.Driver
db.default.url="postgres://postgres:password@localhost:5432/postgres"
db.default.url=${?DATABASE_URL}

我的build.sbt

libraryDependencies ++= Seq(
  "com.typesafe.play" %% "play-slick" % "2.0.0",
  "com.typesafe.play" %% "play-slick-evolutions" % "2.0.0",
  "com.h2database" % "h2" % "1.4.187",
  "org.postgresql" % "postgresql" % "9.4-1201-jdbc41",
  ...

)

感谢您的帮助!

【问题讨论】:

  • 请注意,数据可能正在消失,因为它存储在内存中的 H2 数据库中,在进程重新启动后丢失(这在 Heroku 上自动发生)。 Heroku 数据库是持久的。

标签: database postgresql heroku playframework slick


【解决方案1】:

问题可能在于您的配置。 db.default.* 条目是 ignored by Slick,因此您的应用可能连接到内存数据库中的 H2,而不是 Postgres。

只需更新您的配置以将 Slick 指向正确的数据库:

slick.dbs.default.driver="slick.driver.PostgresDriver$"
slick.dbs.default.db.driver="org.postgresql.Driver"
slick.dbs.default.db.url=${JDBC_DATABASE_URL}

或者

slick.dbs.default.driver="slick.driver.PostgresDriver$"
slick.dbs.default.db.dataSourceClass = "slick.jdbc.DatabaseUrlDataSource"
slick.dbs.default.db.properties.driver = "org.postgresql.Driver"

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-11-05
  • 1970-01-01
  • 2016-02-26
  • 2017-05-18
  • 1970-01-01
  • 2018-05-04
  • 2020-08-02
  • 1970-01-01
相关资源
最近更新 更多