2013-04-13 24 views
19

Tôi gặp sự cố khi truy cập cơ sở dữ liệu mem qua h2-browser trên dự án khung Play.Truy cập cơ sở dữ liệu dự án phát với trình duyệt h2

Với cấu hình bên dưới, tôi nghĩ là đúng (dường như không!) Tôi đang dùng trình duyệt h2, nhưng không có bảng (bên cạnh lược đồ), mặc dù tôi đã áp dụng một số di chuyển.

Tôi thiếu gì ở đây? Cảm ơn trước.

conf/application.conf:

db.default.driver=org.h2.Driver 
db.default.url="jdbc:h2:mem:play" 
db.default.user=sa 
db.default.password="" 

conf

Trả lời

22

Khi bạn đang sử dụng cơ sở dữ liệu trong-mem thực sự bạn đang truy cập hai cơ sở dữ liệu khác nhau (mặc dù với cùng một con đường). Bạn có hai giải pháp:

  1. đầu tiên từ giao diện điều khiển của bạn bắt đầu trọc 'chơi' console, chạy h2 trình duyệt và cuối cùng là chạy ứng dụng của bạn (withinh cùng play console)
  2. Run H2 trong server mode, thêm beneffit từ này phương pháp tiếp cận thực tế là bạn sẽ không mất dữ liệu của mình khi khởi động lại ứng dụng khi DB được lưu trữ trong tệp. Sau đó, bạn có thể truy cập cơ sở dữ liệu này từ nhiều điểm (cũng từ 'độc' H @ trình duyệt hoặc một số giao diện khác) với con đường tương tự như:

Unix (~ nghĩa thư mục chính của bạn)

db.default.url="jdbc:h2:tcp://localhost/~/some/path/to/MyPlayDB"

hoặc Windows

db.default.url="jdbc:h2:tcp://localhost/c:/some/path/to/MyPlayDB"

Lưu ý rằng for best performance trong phương thức sản xuất đó là chuyển đổi xứng đáng trở lại e chế độ mbedded, tuy nhiên đối với giai đoạn dev rằng giải pháp phải đủ tốt (vẫn nhanh hơn ví dụ về MySQL)

+0

Tôi đã thử giải pháp 1 của bạn và các bảng vẫn không hiển thị. Vì vậy, câu trả lời thực tế cho câu hỏi sẽ là sử dụng giải pháp 2? – nemoo

+0

@nemoo - vừa được thử nghiệm với Play 2.2.0 mới - cách tiếp cận đầu tiên hoạt động theo yêu cầu _still_ – biesior

+2

Tôi cũng đã thử giải pháp 1 và có cùng vấn đề. Tôi bắt đầu chơi giao diện điều khiển, chạy trình duyệt h2, đăng nhập vào màn hình web trình duyệt h2. Sau đó, sử dụng cùng một giao diện điều khiển, tôi chạy "chạy". Khi truy cập trang web của tôi, tôi nhận được "Không thể kết nối với cơ sở dữ liệu [mặc định]". Tui bỏ lỡ điều gì vậy? Chuỗi kết nối là "jdbc: h2: mem: play" và tôi đang sử dụng Play 2.2.1 – according2me

16

Để duyệt nội dung của cơ sở dữ liệu qua H2 Web Console, khởi động cả bàn điều khiển web và ứng dụng Play qua Chơi console:

  1. Lúc đầu, nhập play giao diện điều khiển bằng cách chạy typesafe Activator:
    ~/Projects/play-app $ activator
  2. Khởi động web console:
    [play-app] $ h2-browser
    này nên mở giao diện điều khiển H2 trong trình duyệt của bạn.
  3. Chạy ứng dụng Play:
    [play-app] $ run
  4. Truy cập ứng dụng Play trong trình duyệt của bạn. Điều này sẽ khiến ứng dụng Play kết nối với cơ sở dữ liệu H2 trong bộ nhớ và khởi tạo nó với một số dữ liệu mặc định, nếu có.
  5. Đăng nhập vào bảng điều khiển web H2 trong trình duyệt của bạn để kiểm tra nội dung cơ sở dữ liệu.Sử dụng các cài đặt sau đó bạn có thể lưu (ví dụ như Play-App In-Memory Database) để dễ dàng truy cập lại sau:
    • driver Class: org.h2.Driver
    • JDBC URL: jdbc:h2:mem:play
    • Tên tài khoản: sa
    • Mật khẩu: <blank>

Lưu ý rằng các cài đặt ở trên phải khớp với cấu hình thực tế của bạn vào (db.default.url và cứ tiếp tục).

+0

Điều này làm việc cho tôi !! Cảm ơn ;-) –

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