51 votes

problème avec INIT=RUNSCRIPT et 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 souhaite exécuter mon application avec de la mémoire H2 et j'aimerais utiliser l'url jdbc pour initialiser ma base de données :

 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 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 que cela fonctionne?

Merci

105voto

viktortnk Points 2579

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 un script à partir de classpath. Vous pouvez donc simplement le mettre src/main/resources/scripts ou src/test/resources/scripts dans votre projet maven (ou autre chose).

2voto

darioo Points 23903

Je suggérerais 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 se trouve sur votre chemin de classe.

Étant donné que src , où réside votre source, n'est généralement pas sur le chemin de classe, cela pourrait être la source de votre problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X