Comment utiliser un chemin relatif à la configuration du projet root par rapport au fichier H2 db avec le Framework Play 2.4?
nous développons une application Play 2.4 (API Java).
pour les besoins de dev, nous aimerions utiliser une base de données H2 persistante avec un chemin de fichier DB relatif au répertoire racine du projet.
Dans Comment utiliser un persistante H2 base de données dans le Jeu de Cadre au lieu de mémoire il y a une solution pour Jouer 2.0:
db.default.url="jdbc:h2:file:data/db"
cependant, avec le jeu 2.4 cela ne semble pas fonctionner mais j'ai un message d'erreur à l'exception suivante en bas:
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)
...
je pouvais obtenir une connexion pour travailler avec un chemin absolu et avec un chemin relatif au répertoire personnel, comme suit:
db.default.url="jdbc:h2:file:/Users/foo/data/db"
ou
db.default.url="jdbc:h2:~/data/db"
Toutefois, est-il possible de consulter le dossier racine du projet?
2 réponses
Ok, j'ai fait une petite recherche et j'ai trouvé ça dans le changelog ( http://www.h2database.com/html/changelog.html ):
les chemins relatifs implicites sont désactivés (propriété du système "h2.implicitRelativePath"), de sorte que L'URL de la base de données jdbc:H2:test doit maintenant être écrite comme jdbc:H2:./test.
dans H2 à partir de la version 1.4.177 Beta, les chemins relatifs implicites ne sont plus autorisés. Donc, dans votre cas, l'url doit être écrite avec un chemin relatif explicite: db.default.url="jdbc:h2:./data/db"
.
dans votre cas, je pense
db.défaut.url = "jdbc: h2:~ / data / db"
se réfère à ressource dossier de votre projet.