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

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

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

на как использовать постоянную базу данных H2 в Play Framework вместо in-memory есть решение для игры 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"

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

2 ответов


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

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

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


в вашем случае , я думаю,

db.по умолчанию.URL-адрес="JDBC с:Н2:~/данные/дБ"

будет относиться к ресурс папка вашего проекта.