2015-06-02 5 views
21

Мы разрабатываем приложение Play 2.4 (Java API).Как использовать путь по отношению к корню проекта к конфигурации db-файла H2 с помощью Play Framework 2.4?

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

В 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" 

Однако, есть какой-то способ, чтобы обратиться к корневой папке проекта?

+2

как насчет 'db.default.url =" jdbc: h2: ./ data/db "'? – Roman

+0

@Roman Кажется работать, спасибо. Не знаю, может ли быть хрупким, если процесс будет запущен из другого каталога каким-либо образом. Но для нашего развития это не проблема. Вы хотели бы добавить это как ответ? – Touko

ответ

30

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

-3

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

db.default.url = "h2: JDBC: ~/данные/дб"

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

+3

Неправильное. '~/data/db' будет ссылаться на' /data/db'. – javaj