如何为Play 2.0设置PostgreSQL?

如何为Play 2.0设置PostgreSQL?,postgresql,scala,playframework-2.0,Postgresql,Scala,Playframework 2.0,我想为我的Play应用程序配置PostgreSQL,但出现以下错误: ! Internal server error, for request [GET /] -> java.util.concurrent.TimeoutException: Futures timed out after [300000] milliseconds at akka.dispatch.DefaultPromise.ready(Future.scala:834) ~[akka-actor.jar:2.

我想为我的Play应用程序配置PostgreSQL,但出现以下错误:

! Internal server error, for request [GET /] ->

java.util.concurrent.TimeoutException: Futures timed out after [300000] milliseconds    at
akka.dispatch.DefaultPromise.ready(Future.scala:834)
~[akka-actor.jar:2.0]   at
akka.dispatch.DefaultPromise.result(Future.scala:838)
~[akka-actor.jar:2.0]   at akka.dispatch.Await$.result(Future.scala:74)
~[akka-actor.jar:2.0]   at
play.core.ReloadableApplication.get(ApplicationProvider.scala:108)
~[play_2.9.1.jar:2.0]   at
play.core.server.Server$class.sendHandler$1(Server.scala:59)
[play_2.9.1.jar:2.0]    at
play.core.server.Server$$anonfun$getHandlerFor$4.apply(Server.scala:89)
[play_2.9.1.jar:2.0] [error] application - 

! @6a64i2p5o - Internal server error, for request [GET /] ->

play.api.PlayException: Not initialized [?]     at
play.api.PlayException$.apply(Exceptions.scala:122)
~[play_2.9.1.jar:2.0]   at
play.core.ReloadableApplication.<init>(ApplicationProvider.scala:94)
~[play_2.9.1.jar:2.0]   at
play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:165)
~[play_2.9.1.jar:2.0]   at
play.core.server.NettyServer$$anonfun$mainDev$1.apply(NettyServer.scala:164)
~[play_2.9.1.jar:2.0]   at
play.utils.Threads$.withContextClassLoader(Threads.scala:17)
~[play_2.9.1.jar:2.0]   at
play.core.server.NettyServer$.mainDev(NettyServer.scala:163)
~[play_2.9.1.jar:2.0]
project/Build.scala

val appDependencies = Seq(
  "postgresql" % "postgresql" % "9.1-901.jdbc4"
)
我设置了
Play\u playing\u DB
,可以通过终端和命令
psql Play\u playing\u DB
访问它


问题的根本原因可能是什么?

最有可能的原因是:

db.default.url="postgres://play:play@localhost:9000/Play_Playground_DB"
上面说,“db.default.url”是一个普通的JDBC-url。您的价值观存在两个问题:

  • 它不是PostgreSQL可以识别的格式。寻找允许的格式
  • 使用
    …default…
    可以重新定义默认数据源。默认情况下,除非您执行更多步骤,否则这会带来麻烦
在您的案例中,有效的PostgreSQL URL可能如下所示:

jdbc:postgresql://localhost:9000/Play_Playground_DB
但是:您确定您的数据库正在端口9000上运行吗?你说
psqlplay\u playder\u DB
适合你。因此,我认为您的端口应该是默认端口5432。那么这个URL就是正确的:

jdbc:postgresql://localhost/Play_Playground_DB

在我的OSX上,我安装了来自自制的PostgreSQL,当前版本是9.3.4

上面描述的连接字符串不适用于我,因为它们使用的是postresql数据库名称。当且仅当我指定like时,我的连接才会建立:

db.default.url="postgres://user:password@localhost/MyDbName"

请注意,它是postgres而不是postgresql。

该URL不是postgresql能够识别的任何内容;大概框架正在将其分解并挑选出所需的部分?另外,我建议您阅读本节并更新驱动程序jar:谢谢!已将其更新为当前版本。谢谢,您最后发布的URL就是解决方案。现在工作!只是想知道为什么这里的描述有所不同:我使用了以下配置:db.default.url=“jdbc:postgresql://localhost/Play_Playground_DB@TomTom:关于github链接:这是关于“BoneCP”的,它是一个连接池,位于数据库和应用程序/框架之间。使用连接池通常需要非标准URL。我正在使用Play 2.0.4,并且在不向URL添加jdbc:的情况下使其正常工作。但是,您可能会在默认端口(5432)上运行PostGres,特别是当9000是播放使用的默认HTTP端口时。对于任何有相同问题的人,这是正确的答案,但是我必须从播放中执行
重新加载
!控制台,因为修改Build.scala将不会生效,除非您退出控制台,或者执行
重新加载
,然后执行
依赖项
。这解决了我遇到的问题。我正在使用Postgres 9.2.3和Play 2.3.0
db.default.url="postgres://user:password@localhost/MyDbName"