Как настроить PostgreSQL для Play 2.0?

Я хочу настроить PostgreSQL для моего приложения Play, но я получаю следующую ошибку:

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

Я использую следующие файлы конфигурации:

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

Проект /Build.scala

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

Я установил Play_Playground_DB и могу получить к нему доступ через терминал и команду psql Play_Playground_DB.

Что может быть основной причиной проблемы?

Ответы

Ответ 1

Скорее всего, это проблема:

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

play doku говорит: "db.default.url" - это простой JDBC-URL. Есть две проблемы с вашим значением:

  • Это не в формате, распознаваемом PostgreSQL. Посмотрите здесь для разрешенных форматов.
  • С ...default... вы переопределяете исходный источник данных. По умолчанию это вызывает проблемы, если вы не выполните еще несколько шагов.

Допустимый URL-адрес PostgreSQL может выглядеть следующим образом:

jdbc:postgresql://localhost:9000/Play_Playground_DB

Но: _ Убедитесь, что ваша база данных запущена на порту 9000? Вы говорите, что psql Play_Playground_DB работает для вас. Поэтому я думаю, что ваш порт должен быть стандартным портом 5432. Затем этот URL-адрес правильный:

jdbc:postgresql://localhost/Play_Playground_DB

Ответ 2

На моем OSX я установил PostgreSQL из homebrew, а текущая версия - 9.3.4

Строки подключения, описанные выше, не работают для меня, потому что они используют имя базы данных postresql. Мои подключения устанавливаются тогда и только тогда, когда я указываю:

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

Обратите внимание, что это postgres вместо postgresql.