problème avec INIT=RUNSCRIPT et les chemins relatifs
j'utilise les conventions maven pour les chemins source (src/main src/test) et j'ai mes scripts sql dans src/main/resources / scripts.
je veux lancer mon application avec de la mémoire H2 et j'aimerais utiliser l'url jdbc pour initialiser ma db:
database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';
mon problème est que ce chemin relatif (src/main/... ) ne fonctionne pas, et que H2 ne se plantera pas si la commande init=runscript ne cible rien.
est ce que quelqu'un sait quel est le chemin que je devrais utiliser pour faire ce travail ?
Merci
2 réponses
Vous pouvez utiliser l'url suivante:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"
avec celui-ci, il est possible d'Exécuter script depuis classpath. Ainsi, vous pouvez simplement mettre src/main/resources/scripts ou src/test/resources/scripts dans votre maven (ou autre chose).
je te suggère d'essayer d'utiliser un chemin absolu pour commencer, juste pour vérifier que tout fonctionne. Ensuite, vérifiez votre chemin de classe. Par exemple, bin/main/resources/scripts/create.sql
, en supposant que bin
est l'endroit où vos classes sont compilées, et est sur votre classpath.
Depuis src
, là où votre source vit, n'est généralement pas sur le chemin de la classe, cela pourrait être la source de votre problème.