Jdbc 如何在Play Framework 2.4中使用相对于项目根到H2 db文件配置的路径?

Jdbc 如何在Play Framework 2.4中使用相对于项目根到H2 db文件配置的路径?,jdbc,h2,relative-path,persistent,playframework-2.4,Jdbc,H2,Relative Path,Persistent,Playframework 2.4,我们正在开发一个Play2.4应用程序(JavaAPI) 出于开发目的,我们希望使用一个持久的H2数据库,该数据库具有相对于项目根目录的DB文件路径 在游戏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 relativ

我们正在开发一个Play2.4应用程序(JavaAPI)

出于开发目的,我们希望使用一个持久的H2数据库,该数据库具有相对于项目根目录的DB文件路径

在游戏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"


但是,有什么方法可以引用项目根文件夹吗?

好的,我做了一些研究,在changelog()中发现了这个:

隐式相对路径被禁用(系统属性“h2.implicitRelativePath”),因此数据库URL jdbc:h2:test现在需要写成jdbc:h2:./test

在从1.4.177Beta版开始的H2中,不再允许隐式相对路径。因此,在您的情况下,url应该使用显式的相对路径编写:
db.default.url=“jdbc:h2:./data/db”

可以使用固定或相对路径。使用URL jdbc:h2:file:./data/sample时

现在可以使用相对路径

比如说,,
jdbc:h2:file:../../../h2db

db.default.url=“jdbc:h2:./data/db”?@Roman似乎可以工作,谢谢。不知道若进程以某种方式从不同的目录启动,那个么它是否会很脆弱。但是对于我们的开发使用来说,这不是一个问题。您想添加这个作为答案吗?您是否尝试过从jar文件本身访问h2 db?如果是,请在此线程上回复我:
db.default.url="jdbc:h2:~/data/db"