2013-11-28 44 views
1

我跟着Scala Play 2.1.x tutorial创建了一个todolist应用程序。Play的演变未在Heroku上运行

关于本地开发环境+本地Heroku Postgres:进化是自动执行的。该应用程序工作得很好。

在Heroku上,进化并没有被执行。因此,我会得到一个不存在的关系错误。

这里是Procfileweb: target/start -Dhttp.port=${PORT} -Ddb.default.url=${DATABASE_URL} -Ddb.default.driver=org.postgresql.Driver -DapplyEvolutions.default=true

尝试

  1. 移动db.default.urldb.default.driver & applyEvolutions.defaultapplication.conf
  2. 在此问题中接受的答案使用说明Errors in evolutions on Heroku。从我的本地开发机器连接到远程Heroku Postgres数据库并运行进化 - 它完美运行。
  3. 我安装了Play 2.2.1并尝试了相同的教程,我遇到了同样的问题。

因为我能够从我的本地开发机器执行进化到远程Heroku Postgres数据库。这个问题似乎只有在Heroku环境中才会发生。

+0

尝试从你的'Procfile' –

+0

删除'-DapplyDownEvolutions.default = TRUE;去除'-DapplyDownEvolutions.default = TRUE; ,但不幸的是仍然不能解决问题。 – tommi

回答

3

我犯了一个非常糟糕的错误 - 进化脚本是gitignored。这意味着它从未被部署到Heroku,所以Play的演化没有任何执行。

准确地说,进化脚本*.sql被我的全局gitignore设置所改变。 play new appname附带的.gitignore完美无缺。

+0

这是我确切的问题,谢谢。为了更进一步,我将这个条目添加到了我的.gitignore中,并且现在包含了play ONLY SQL ONLY:!conf/evolutions/**/*。sql –

0

看来问题不是来自Heroku,而是来自Heroku中的数据库。

你的数据库中有一张名为“play_evolutions”的表吗? Heroku的ebean conf是什么?

+0

嗨!不,我无法在数据库中找到'play_evolutions'表格,这个表格应该可以跟踪演变过程。而且不会,不会在应用程序中使用ebean。 – tommi

+0

我遵循http://stackoverflow.com/questions/12195568/errors-in-evolutions-on-heroku。从我的本地机器连接到远程数据库,并且演变正常。 – tommi

0

复制我的工作版本

Heroku - Unable to setup postgres database through Play Framework app?

贴在我的情况的git的init,git的补充。,工程巨大。使用Heroku的发挥2.4,油滑3.0.3 & Postgres的工作对我来说,运行我的SQL脚本进化以下设置:

在build.sbt:

name := """app-name""" 

,并添加libraryDependencies以下++ = Seq(

"com.typesafe.play" %% "play-slick" % "1.0.1", 
"com.typesafe.play" %% "play-slick-evolutions" % "1.0.1", 
"com.typesafe.slick" %% "slick" % "3.0.3", 
"org.postgresql" % "postgresql" % "9.4-1201-jdbc41", 
"org.slf4j" % "slf4j-nop" % "1.6.4", 

在申请中。CONF:

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

和Procfile:

web: target/universal/stage/bin/app-name -Dhttp.port=${PORT} -Dplay.evolutions.db.default.autoApply=true 

干杯

+0

对不起,我已经重写了答案。请发表评论。干杯 –