jdbc h2 relative-path persistent playframework-2.4

jdbc - ¿Cómo usar una ruta relativa a la configuración del proyecto root a H2 db-file con Play Framework 2.4?



relative-path persistent (2)

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

Para propósitos de desarrollo, nos gustaría utilizar una base de datos H2 persistente con la ruta del archivo DB en relación con el directorio raíz del proyecto.

En Cómo utilizar una base de datos H2 persistente en Play Framework en lugar de en la 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 hacer que la conexión funcione con una ruta absoluta y con una ruta relativa al directorio principal, 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 forma de referirse a la carpeta raíz del proyecto?


Bien, investigué un poco y encontré esto en el registro de cambios ( http://www.h2database.com/html/changelog.html ):

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

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


En tu caso, creo

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

se referirá a la carpeta de recursos de tu proyecto.