2015-06-02 18 views
21

Chúng tôi đang phát triển ứng dụng Play 2.4 (Java API).Làm thế nào để sử dụng một đường dẫn liên quan đến gốc của dự án với cấu hình tệp H2 db với Play Framework 2.4?

Vì mục đích phát triển, chúng tôi muốn sử dụng cơ sở dữ liệu H2 liên tục với đường dẫn tệp DB liên quan đến thư mục gốc của dự án.

Trong How to use a persistent H2 database in the Play Framework instead of in-memory đã có giải pháp cho Chơi 2.0:

db.default.url="jdbc:h2:file:data/db" 

Tuy nhiên, với Play 2.4 này dường như không làm việc nhưng tôi nhận được thông báo lỗi với ngoại lệ sau ở dưới cùng:

Caused by: org.h2.jdbc.JdbcSQLException: A file path that is implicitly 
relative to the current working directory is not allowed in the database 
URL "jdbc:h2:file:data/db". Use an absolute path, ~/name, ./name, or the 
baseDir setting instead. [90011-187] 
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:345) 
    at org.h2.message.DbException.get(DbException.java:179) 
    ... 

Tôi có thể kết nối để làm việc với đường dẫn tuyệt đối và có đường dẫn tương đối với thư mục chính, như sau:

db.default.url="jdbc:h2:file:/Users/foo/data/db" 

hoặc

db.default.url="jdbc:h2:~/data/db" 

Tuy nhiên, có một số cách để tham khảo các thư mục gốc của dự án?

+2

về 'db.default.url =" jdbc: h2: ./ data/db "'? – Roman

+0

@Roman Dường như làm việc, cảm ơn. Không biết liệu điều đó có thể mong manh không nếu quá trình sẽ được bắt đầu từ thư mục khác nhau theo một cách nào đó. Nhưng đối với việc sử dụng phát triển của chúng tôi thì đây không phải là vấn đề. Bạn có muốn thêm câu trả lời đó làm câu trả lời không? – Touko

Trả lời

30

Ok, tôi đã làm một ít nghiên cứu và thấy điều này trong changelog (http://www.h2database.com/html/changelog.html):

đường dẫn tương đối Implicit bị vô hiệu hóa (sở hữu hệ thống "h2.implicitRelativePath"), do đó jdbc URL cơ sở dữ liệu: h2 : kiểm tra bây giờ cần phải được viết dưới dạng jdbc: h2: ./ test.

Trong H2 bắt đầu từ phiên bản 1.4.177 Beta, đường dẫn tương đối ngầm không được phép nữa. Do đó, trong trường hợp của bạn, url phải được viết bằng đường dẫn tương đối rõ ràng: db.default.url="jdbc:h2:./data/db".

-3

Trong trường hợp của bạn, tôi nghĩ

db.default.url = "jdbc: h2: ~/data/db"

sẽ đề cập đến nguồn thư mục của dự án của bạn.

+3

Điều đó không đúng. '~/data/db' sẽ tham chiếu đến' /data/db'. – javaj

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