Play 2.5 - slick:与heroku的数据库连接

时间:2016-06-13 19:51:26

标签: database postgresql heroku playframework slick

这是我第一次在Heroku上部署Play应用程序(带光滑)。一切都运作良好,但在一段时间不活动后,我存储在数据库中的所有数据都会消失 ......

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

或者是因为我的配置?

我的“ 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",
  ...

)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

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

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"