问题描述
我正在尝试通过播放框架应用程序在heroku上设置postgres数据库,但是我不断收到有关我的DATABASE_URL的错误。
I am trying to setup postgres database on heroku through play framework app but i am keep getting an error regarding my DATABASE_URL.
堆栈跟踪: -
-----> Heroku receiving push
-----> Play 2.0 - Java app detected
-----> Running: sbt clean compile stage
Getting net.java.dev.jna jna 3.2.3 ...
:: retrieving :: org.scala-sbt#boot-jna
confs: [default]
1 artifacts copied, 0 already retrieved (838kB/25ms)
Getting org.scala-tools.sbt sbt_2.9.1 0.11.2 ...
:: retrieving :: org.scala-sbt#boot-app
confs: [default]
37 artifacts copied, 0 already retrieved (7324kB/78ms)
Getting Scala 2.9.1 (for sbt)...
:: retrieving :: org.scala-sbt#boot-scala
confs: [default]
4 artifacts copied, 0 already retrieved (19939kB/188ms)
[info] Loading global plugins from /tmp/build_hdhsg4dgyxy/.sbt_home/.sbt/plugins
[info] Updating {file:/tmp/build_hdhsg4dgyxy/.sbt_home/.sbt/plugins/}default-05c586...
[info] Resolving org.scala-tools.sbt#sbt_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#main_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#actions_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#classfile_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#io_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#control_2.9.1;0.11.2 ...
[info] Resolving org.scala-lang#scala-library;2.9.1 ...
[info] Resolving org.scala-tools.sbt#interface;0.11.2 ...
[info] Resolving org.scala-tools.sbt#logging_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#process_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#classpath_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#launcher-interface_2.9.1;0.11.2 ...
[info] Resolving org.scala-lang#scala-compiler;2.9.1 ...
[info] Resolving org.scala-tools.sbt#incremental-compiler_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#collections_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#api_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#persist_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbinary#sbinary_2.9.0;0.4.0 ...
[info] Resolving org.scala-tools.sbt#compile_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#ivy_2.9.1;0.11.2 ...
[info] Resolving org.apache.ivy#ivy;2.2.0 ...
[info] Resolving com.jcraft#jsch;0.1.31 ...
[info] Resolving commons-httpclient#commons-httpclient;3.1 ...
[info] Resolving commons-logging#commons-logging;1.0.4 ...
[info] Resolving commons-codec#commons-codec;1.2 ...
[info] Resolving org.scala-tools.sbt#completion_2.9.1;0.11.2 ...
[info] Resolving jline#jline;0.9.94 ...
[info] Resolving org.scala-tools.sbt#run_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#task-system_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#tasks_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#tracking_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#cache_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#testing_2.9.1;0.11.2 ...
[info] Resolving org.scala-tools.testing#test-interface;0.5 ...
[info] Resolving org.scala-tools.sbt#compiler-interface;0.11.2 ...
[info] Resolving org.scala-tools.sbt#precompiled-2_8_1;0.11.2 ...
[info] Resolving org.scala-tools.sbt#precompiled-2_8_0;0.11.2 ...
[info] Resolving org.scala-tools.sbt#precompiled-2_9_0;0.11.2 ...
[info] Done updating.
[info] Compiling 1 Scala source to /tmp/build_hdhsg4dgyxy/.sbt_home/.sbt/plugins/target/scala-2.9.1/sbt-0.11.2/classes...
[info] Loading project definition from /tmp/build_hdhsg4dgyxy/project
[info] Set current project to PostDemo (in build file:/tmp/build_hdhsg4dgyxy/)
[success] Total time: 0 s, completed Jun 28, 2012 2:20:47 AM
[info] Updating {file:/tmp/build_hdhsg4dgyxy/}PostDemo...
[info] downloading http://repo.typesafe.com/typesafe/releases/postgresql/postgresql/9.1-901.jdbc4/postgresql-9.1-901.jdbc4.jar ...
[info] [SUCCESSFUL ] postgresql#postgresql;9.1-901.jdbc4!postgresql.jar (117ms)
[info] Done updating.
[info] Compiling 4 Scala sources and 4 Java sources to /tmp/build_hdhsg4dgyxy/target/scala-2.9.1/classes...
[error] {file:/tmp/build_hdhsg4dgyxy/}PostDemo/compile:compile: com.typesafe.config.ConfigException$UnresolvedSubstitution: conf/application.conf: 37: Could not resolve substitution to a value: ${DATABASE_URL}
[error] Total time: 10 s, completed Jun 28, 2012 2:20:57 AM
! Failed to build app with sbt
! Heroku push rejected, failed to compile Play 2.0 - java app
error: failed to push some refs to '[email protected]'
我使用以下命令将DATABASE_URL设置为环境变量: -
I set my DATABASE_URL as environment variable using the following command: -
echo "export DATABASE_URL=postgres://postgres:1234@localhost/Play">>.bash_profile
. .bash_profile
我尝试设置另一个URL,我发现使用命令 heroku配置
,我知道是一个大的长的postgres URL,但它没有工作,同样的异常每次都出现。
I tried to set another URL as well, which i found using command heroku config
that i came to know is a big long postgres URL but it didn't work as well and same exception arising every time.
这是我在我的application.conf文件中添加的
Here is what i have added in my application.conf file
%prod.db=${DATABASE_URL}
依赖关系
val appDependencies = Seq(
"postgresql" % "postgresql" % "9.1-901.jdbc4"
)
所以现在我对我的 DATABASE_URL
感到困惑。为什么英雄不能用适当的价值取代它。 heroku在哪里寻找合适的网址?在我的系统的bash配置文件中设置的 application.conf
文件或环境变量中?
So now i am confused about my DATABASE_URL
. Why heroku is unable to substitue it with suitable value. Where does heroku looking for an appropriate URL? In my application.conf
file or in environment variables set in my system's bash profile?
任何帮助将是真的赞赏。
Any help would be really appreciated.
谢谢
编辑
日志
2012-06-28 20:38:18,500 - [INFO] - from play in main
Listening for HTTP on port 9000...
2012-06-28 20:38:25,862 - [INFO] - from play in play-akka.actor.default-dispatcher-1
database [default] connected at jdbc:postgresql://localhost/Play
2012-06-28 20:38:27,470 - [ERROR] - from application in New I/O server worker #1-1
! @6aoffk4jk - Internal server error, for request [GET /login/?username=abc&&password=abc] ->
play.api.db.evolutions.InvalidDatabaseRevision: Database 'default' needs evolution! [An SQL script need to be run on your database.]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:424) ~[play_2.9.1.jar:2.0.1]
at play.api.db.evolutions.EvolutionsPlugin$$anonfun$onStart$1.apply(Evolutions.scala:410) ~[play_2.9.1.jar:2.0.1]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) ~[scala-library.jar:0.11.2]
at scala.collection.immutable.List.foreach(List.scala:45) ~[scala-library.jar:0.11.2]
at play.api.db.evolutions.EvolutionsPlugin.onStart(Evolutions.scala:410) ~[play_2.9.1.jar:2.0.1]
at play.api.Play$$anonfun$start$1.apply(Play.scala:60) ~[play_2.9.1.jar:2.0.1]
at play.api.Play$$anonfun$start$1.apply(Play.scala:60) ~[play_2.9.1.jar:2.0.1]
at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) ~[scala-library.jar:0.11.2]
at scala.collection.immutable.List.foreach(List.scala:45) ~[scala-library.jar:0.11.2]
at play.api.Play$.start(Play.scala:60) ~[play_2.9.1.jar:2.0.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anonfun$1.apply(ApplicationProvider.scala:125) ~[play_2.9.1.jar:2.0.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3$$anonfun$1.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0.1]
at scala.Option.map(Option.scala:133) ~[scala-library.jar:0.11.2]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply(ApplicationProvider.scala:112) ~[play_2.9.1.jar:2.0.1]
at play.core.ReloadableApplication$$anonfun$get$1$$anonfun$apply$3.apply(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0.1]
at scala.Either$RightProjection.flatMap(Either.scala:277) ~[scala-library.jar:0.11.2]
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0.1]
at play.core.ReloadableApplication$$anonfun$get$1.apply(ApplicationProvider.scala:110) ~[play_2.9.1.jar:2.0.1]
at akka.dispatch.Future$$anon$3.liftedTree1$1(Future.scala:195) ~[akka-actor.jar:2.0.1]
at akka.dispatch.Future$$anon$3.run(Future.scala:194) ~[akka-actor.jar:2.0.1]
at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:83) ~[akka-actor.jar:2.0.1]
at akka.jsr166y.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1381) ~[akka-actor.jar:2.0.1]
at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259) ~[akka-actor.jar:2.0.1]
at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:974) ~[akka-actor.jar:2.0.1]
at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1478) ~[akka-actor.jar:2.0.1]
at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104) ~[akka-actor.jar:2.0.1]
2012-06-28 20:38:30,150 - [WARN] - from play in New I/O server worker #1-1
Applying evolution script for database 'default':
# !!! WARNING! This script contains DOWNS evolutions that are likely destructives
# --- Rev:2,Downs - eddafc8
delete from admins;
delete from employees;
# --- Rev:2,Ups - 822c4da
insert into admins (username, password) values ('abc', 'abc');
insert into admins (username, password) values ('abc', 'abc');
insert into employees (id,name,email) values (1, 'Super Man', '[email protected]');
insert into employees (id,name,email) values (2, 'Bat man', '[email protected]');
insert into employees (id,name,email) values (3, 'Spider Man', '[email protected]');
insert into employees (id,name,email) values (4, 'Iron Man', '[email protected]');
2012-06-28 20:38:30,741 - [INFO] - from play in play-akka.actor.default-dispatcher-1
database [default] connected at jdbc:postgresql://localhost/Play
2012-06-28 20:38:31,519 - [INFO] - from play in play-akka.actor.default-dispatcher-1
Application started (Dev)
推荐答案
一些Play 1和Play 2约定。看起来你正在使用播放2.在播放2中,最简单的设置方法是在您的 application.conf $中不使用
DATABASE_URL
c $ c>而不是在 Procfile
中覆盖数据库配置:
It seems you are mixing some Play 1 and Play 2 conventions. It appears you are using Play 2. In Play 2 the easiest way to set this up is to not use DATABASE_URL
in your application.conf
and instead just override the database config in your Procfile
:
web: target/start -Dhttp.port=$PORT -DapplyEvolutions.default=true -Ddb.default.driver=org.postgresql.Driver -Ddb.default.url=$DATABASE_URL
有关更详细的步骤,请参阅我的。
For a more detailed walk-through see my Play 2 Tutorial.
这篇关于Heroku - 无法通过Play Framework应用程序设置postgres数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!