2012-04-23 17 views
14

Me gustaría configurar PostgreSQL para mi aplicación Play, pero estoy recibiendo el siguiente error:¿Cómo configurar PostgreSQL para Play 2.0?

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

utilizo los siguientes archivos de configuración:

application.conf

db.default.url="postgres://play:[email protected]:9000/Play_Playground_DB" 
db.default.user=play 
db.default.password=play 
db.default.driver=org.postgresql.Driver 

proyecto/Build.scala

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

Configuré Play_Playground_DB y puedo acceder a él a través del terminal y el comando psql Play_Playground_DB.

¿Cuál podría ser la causa raíz del problema?

+0

Esa URL no es nada que PostgreSQL reconocería; presumiblemente el marco está desarmando y seleccionando las piezas necesarias? Además, le recomiendo que lea esta sección y actualice el archivo jar del controlador: http://jdbc.postgresql.org/download.html#actual – kgrittn

+0

¡Gracias! Lo actualicé a la versión actual. –

Respuesta

24

más probable es que este es el problema:

db.default.url="postgres://play:[email protected]:9000/Play_Playground_DB" 

El play doku dice: "db.default.url" es un JDBC URL normal. Hay dos problemas con su valor:

  • No está en un formato reconocido por PostgreSQL. Mire here para conocer los formatos permitidos.
  • Con ...default... redefine el origen de datos predeterminado. Por defecto, esto requiere problemas a menos que realice algunos pasos más.

Una URL válida PostgreSQL podría tener este aspecto en su caso:

jdbc:postgresql://localhost:9000/Play_Playground_DB 

Pero: _ está seguro de su base de datos se ejecuta en el puerto 9000? Usted dice que psql Play_Playground_DB es adecuado para usted. Por lo tanto creo que el puerto debe ser el puerto predeterminado 5432. A continuación, esta URL es la correcta:

jdbc:postgresql://localhost/Play_Playground_DB 
+0

Gracias, la última URL que postet es la solución. Funciona ahora! Me preguntaba por qué se describe aquí de manera diferente: https://github.com/playframework/Play20/wiki/SettingsJDBC –

+0

Utilicé esta configuración: db.default.url = "jdbc: postgresql: // localhost/Play_Playground_DB" –

+0

@TomTom: Con respecto al enlace github: se trata de "BoneCP", un grupo de conexiones que está encajado entre el DB y la aplicación/framework. El uso de un grupo de conexiones a menudo requiere URLs no estándar. –

5

En mi OSX, He instalado PostgreSQL desde homebrew y la versión actual es 9.3.4

El Las cadenas de conexión descritas anteriormente no funcionan para mí porque están usando postresql nombre de base de datos. Mis conexiones se establecen si y sólo si se especifica como:

db.default.url="postgres://user:[email protected]/MyDbName" 

cuenta de que es postgres en lugar de PostgreSQL.

+0

Esto resolvió el problema que estaba teniendo. Estoy usando Postgres 9.2.3 y Play 2.3.0 – MikeW

Cuestiones relacionadas