如何使用相对于项目根目录的路径来使用 Play Framework 2.4 进行 H2 db 文件配置?
How to use a path relative to project root to H2 db-file configuration with Play Framework 2.4?
我们正在开发 Play 2.4 应用程序 (Java API)。
出于开发目的,我们希望使用持久性 H2 数据库,其中数据库文件路径相对于项目根目录。
在 How to use a persistent H2 database in the Play Framework instead of in-memory 中有 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"
但是,有什么方法可以引用项目根文件夹吗?
好的,我做了一些研究并在更新日志中找到了这个 (http://www.h2database.com/html/changelog.html):
Implicit relative paths are disabled (system property "h2.implicitRelativePath"), so that the database URL jdbc:h2:test now needs to be written as jdbc:h2:./test.
从 1.4.177 Beta 版开始的 H2 中,不再允许隐式相对路径。因此,在您的情况下,url 应该使用明确的相对路径编写:db.default.url="jdbc:h2:./data/db"
.
A fixed or relative path can be used. When using the URL jdbc:h2:file:./data/sample
http://www.h2database.com/html/faq.html
现在可以使用相对路径了。
例如,
jdbc:h2:file:./../../h2db;
我们正在开发 Play 2.4 应用程序 (Java API)。
出于开发目的,我们希望使用持久性 H2 数据库,其中数据库文件路径相对于项目根目录。
在 How to use a persistent H2 database in the Play Framework instead of in-memory 中有 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"
但是,有什么方法可以引用项目根文件夹吗?
好的,我做了一些研究并在更新日志中找到了这个 (http://www.h2database.com/html/changelog.html):
Implicit relative paths are disabled (system property "h2.implicitRelativePath"), so that the database URL jdbc:h2:test now needs to be written as jdbc:h2:./test.
从 1.4.177 Beta 版开始的 H2 中,不再允许隐式相对路径。因此,在您的情况下,url 应该使用明确的相对路径编写:db.default.url="jdbc:h2:./data/db"
.
A fixed or relative path can be used. When using the URL jdbc:h2:file:./data/sample http://www.h2database.com/html/faq.html
现在可以使用相对路径了。
例如,
jdbc:h2:file:./../../h2db;