web-dev-qa-db-ja.com

Play Framework 2.4でH2 dbファイル構成へのプロジェクトルートに相対的なパスを使用する方法は?

Play 2.4アプリケーション(Java API)を開発しています。

開発目的のために、プロジェクトのルートディレクトリに相対的なDBファイルパスで永続的なH2データベースを使用したいと思います。

メモリ内の代わりにPlayフレームワークで永続的なH2データベースを使用する方法 Play 2.0の解決策がありました:

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

ただし、Play 2.4ではこれは機能していないようですが、下部に次の例外を含むエラーメッセージが表示されます。

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)
    ...

次のように、絶対パスおよびホームディレクトリからの相対パスで動作するように接続を取得できます。

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

または

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

しかし、プロジェクトのルートフォルダを参照する方法はありますか?

30
Touko

わかりました、私は少し調査をし、changelog( http://www.h2database.com/html/changelog.html )でこれを見つけました:

暗黙的な相対パスが無効になっているため(システムプロパティ "h2.implicitRelativePath")、データベースURL jdbc:h2:testをjdbc:h2:./ testとして記述する必要があります。

バージョン1.4.177 Beta以降のH2では、暗黙的な相対パスは許可されなくなりました。したがって、あなたの場合、明示的な相対パスでURLを記述する必要があります:db.default.url="jdbc:h2:./data/db"

51
Roman

固定パスまたは相対パスを使用できます。 URL jdbc:h2:file:./ data/sampleを使用する場合 http://www.h2database.com/html/faq.html

相対パスを使用できるようになりました。

例えば、 jdbc:h2:file:./../../h2db;

0
Sijo Song