Как использовать путь относительно корня проекта к конфигурации db-файла H2 в Play Framework 2.4?

Мы разрабатываем приложение Play 2.4 (Java API).

Для целей разработки мы хотели бы использовать постоянную базу данных H2 с путем к файлу БД относительно корневого каталога проекта.

В как для использования постоянной базы данных H2 в Play Framework вместо 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"

or

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

Однако есть ли способ обратиться к корневой папке проекта?


person Touko    schedule 02.06.2015    source источник
comment
как насчет db.default.url="jdbc:h2:./data/db"?   -  person Roman    schedule 02.06.2015
comment
@Roman Кажется, работает, спасибо. Не знаю, может ли это быть хрупким, если процесс каким-то образом будет запускаться из другого каталога. Но для нашей разработки это не проблема. Хотели бы вы добавить это в качестве ответа?   -  person Touko    schedule 03.06.2015


Ответы (2)


Хорошо, я провел небольшое исследование и нашел это в журнале изменений (http://www.h2database.com/html/changelog.html):

Неявные относительные пути отключены (системное свойство "h2.implicitRelativePath"), поэтому URL-адрес базы данных jdbc: h2: test теперь должен быть записан как jdbc: h2: ./ test.

В H2, начиная с версии 1.4.177 Beta, неявные относительные пути больше не разрешены. Следовательно, в вашем случае URL-адрес должен быть написан с явным относительным путем: db.default.url="jdbc:h2:./data/db".

person Roman    schedule 03.06.2015
comment
Вы когда-нибудь пытались получить доступ к h2 db из самого файла jar, если да, то ответьте мне в этой теме: stackoverflow.com/questions/49352706/ - person Gopal00005; 19.03.2018

Можно использовать фиксированный или относительный путь. При использовании URL-адреса jdbc: h2: file: ./ data / sample http://www.h2database.com/html/faq.html

теперь можно использовать относительный путь.

например, jdbc:h2:file:./../../h2db;

person Sijo Song    schedule 27.12.2018