Как использовать путь по отношению к корню проекта к 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"
Однако есть ли способ ссылаться на корневую папку проекта?
Ответы
Ответ 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: ~/данных/БД"
будет ссылаться на папку ресурс вашего проекта.