¿Cómo usar una ruta relativa a la raíz del proyecto para la configuración del archivo H2 db con Play Framework 2.4?


Estamos desarrollando una aplicación Play 2.4 (Java API).

Para fines de desarrollo, nos gustaría usar una base de datos H2 persistente con la ruta del archivo DB relativa al directorio raíz del proyecto.

En Cómo usar una base de datos H2 persistente en el Framework Play en lugar de en memoria había una solución para Play 2.0:

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

Sin embargo, con Play 2.4 esto no parece funcionar, pero recibo un mensaje de error con la siguiente excepción en la parte inferior:

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)
    ...

Podría conseguir conexión para trabajar con una ruta absoluta y con una ruta relativa al directorio home, como la siguiente:

db.default.url="jdbc:h2:file:/Users/foo/data/db"

O

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

Sin embargo, ¿hay alguna manera de referirse a la carpeta raíz del proyecto?

Author: Community, 2015-06-02

2 answers

Ok, hice un poco de investigación y encontré esto en el changelog (http://www.h2database.com/html/changelog.html):

Las rutas relativas implícitas están deshabilitadas (propiedad del sistema "h2.implicitRelativePath"), por lo que la URL de la base de datos jdbc:h2:test ahora debe escribirse como jdbc:h2:./prueba.

En H2 a partir de la versión 1.4.177 Beta, las rutas relativas implícitas ya no están permitidas. Por lo tanto, en su caso, la url debe escribirse con una ruta relativa explícita: db.default.url="jdbc:h2:./data/db".

 41
Author: Roman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-03 06:41:47

En su caso , creo

Db.predeterminado.url = "jdbc: h2:~ / data / db"

Se referirá a la carpeta resource de su proyecto.

 -3
Author: Praveen Shendge,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-28 10:23:13