2012-04-23 30 views
14

Tôi muốn cấu hình PostgreSQL cho ứng dụng Google Play của tôi, nhưng tôi nhận được lỗi sau:Cách thiết lập PostgreSQL cho 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] 

tôi sử dụng các tập tin cấu hình sau:

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 

dự án/Build.scala

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

Tôi thiết lập Play_Playground_DB và có thể truy cập thông qua thiết bị đầu cuối và lệnh psql Play_Playground_DB.

Nguyên nhân gốc rễ của vấn đề có thể là gì?

+0

URL đó không phải là bất kỳ thứ gì mà PostgreSQL sẽ nhận ra; có lẽ khuôn khổ đang tách rời nhau và chọn ra những mảnh cần thiết? Ngoài ra, tôi khuyên bạn nên đọc phần này và cập nhật trình điều khiển của bạn jar: http://jdbc.postgresql.org/download.html#current – kgrittn

+0

Cảm ơn! Đã cập nhật nó lên phiên bản hiện tại. –

Trả lời

24

lẽ Hầu hết đây là vấn đề:

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

Các play doku nói, "db.default.url" là một đồng bằng JDBC URL. Có hai vấn đề với giá trị của bạn:

  • Nó không có định dạng được PostgreSQL công nhận. Hãy xem here để biết các định dạng được cho phép.
  • Với ...default... bạn xác định lại nguồn dữ liệu mặc định. Theo mặc định, điều này sẽ gây ra sự cố trừ khi bạn thực hiện thêm một số bước.

URL PostgreSQL hợp lệ có thể trông như thế này trong trường hợp của bạn:

jdbc:postgresql://localhost:9000/Play_Playground_DB 

Nhưng: _ Are chắc chắn cơ sở dữ liệu của bạn đang chạy trên cổng 9000? Bạn nói psql Play_Playground_DB phù hợp với bạn. Vì vậy, tôi nghĩ rằng cổng của bạn nên là cổng mặc định 5432. Sau đó, URL này là một trong những quyền:

jdbc:postgresql://localhost/Play_Playground_DB 
+0

Cảm ơn, URL cuối cùng mà bạn đăng là giải pháp. Hoạt động ngay bây giờ! Chỉ cần tự hỏi tại sao nó được mô tả ở đây khác nhau: https://github.com/playframework/Play20/wiki/SettingsJDBC –

+0

Tôi đã sử dụng cấu hình này: db.default.url = "jdbc: postgresql: // localhost/Play_Playground_DB" –

+0

@TomTom: Về liên kết github: Đây là về "BoneCP", một hồ bơi kết nối được gắn giữa DB và ứng dụng/khung công tác. Việc sử dụng một nhóm kết nối thường yêu cầu các URL không chuẩn. –

5

Ngày OSX của tôi, tôi đã cài đặt PostgreSQL từ homebrew và phiên bản hiện tại là 9.3.4

Các chuỗi kết nối được mô tả ở trên không hoạt động đối với tôi vì chúng đang sử dụng tên cơ sở dữ liệu postresql. kết nối của tôi được thiết lập khi và chỉ khi tôi chỉ định như:

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

Chú ý rằng nó là postgres thay vì postgresql.

+0

Điều này giải quyết được vấn đề tôi đang gặp phải. Tôi đang sử dụng Postgres 9.2.3 và Play 2.3.0 – MikeW

Các vấn đề liên quan