Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set up PostgreSQL for Play 2.0?

I'd like to configure PostgreSQL for my Play app, but am getting the following error:

! 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]

I use the following configuration files:

application.conf

db.default.url="postgres://play:play@localhost:9000/Play_Playground_DB"
db.default.user=play
db.default.password=play
db.default.driver=org.postgresql.Driver

project/Build.scala

val appDependencies = Seq(
  "postgresql" % "postgresql" % "9.1-901.jdbc4"
)

I set up Play_Playground_DB and can access it via terminal and the command psql Play_Playground_DB.

What could be the root cause of the issue?

like image 932
Thomas Kremmel Avatar asked Apr 23 '12 14:04

Thomas Kremmel


2 Answers

Most probably this is the problem:

db.default.url="postgres://play:play@localhost:9000/Play_Playground_DB"

The play doku says, "db.default.url" is a plain JDBC-URL. There are two problems with your value:

  • It is not in a format recognized by PostgreSQL. Look here for allowed formats.
  • With ...default... you redefine the default datasource. By default this calls for trouble unless you do some more steps.

A valid PostgreSQL URL might look like this in your case:

jdbc:postgresql://localhost:9000/Play_Playground_DB

But:_ Are sure your database is running on port 9000? You say psql Play_Playground_DB works for you. Therefore I think your port should be the default port 5432. Then this URL is the right one:

jdbc:postgresql://localhost/Play_Playground_DB
like image 191
A.H. Avatar answered Oct 21 '22 16:10

A.H.


On my OSX, I've installed PostgreSQL from homebrew and current version is 9.3.4

The connection strings described above do not work for me because they are using postresql database name. My connections are established if and only if I specify like:

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

Notice that it is postgres instead of postgresql.

like image 43
Surge Avatar answered Oct 21 '22 18:10

Surge