Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

Хорошо, я сделал небольшое исследование и нашел это в списке изменений (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".

Ответ 2

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

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

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

Ответ 3

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

db.default.url = "JDBC: h2: ~/данных/БД"

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