这是我第一次在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",
...
)
感谢您的帮助!
答案 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"