2013-11-28 86 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

對不起,我已經重寫了答案。請發表評論。乾杯 –