(J'ai déjà vu la base de données H2 en mémoire - schéma d'initialisation via Spring / Hibernate ; cela n'est pas applicable ici.)
J'aimerais savoir s'il existe un paramètre dans H2 qui me permettra de créer automatiquement un schéma lors de la connexion. Si cela aide, je ne suis intéressé que par le cas en mémoire.
H2 prend en charge divers modificateurs séparés par des points-virgules à la fin de l'URL, mais je n'en ai pas trouvé pour créer automatiquement un schéma. Existe-t-il une telle fonctionnalité?
<property name="hibernate.connection.url">jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'script1.sql'\\\;RUNSCRIPT FROM script2.sql'</property>
dans votre configuration d'hibernation.;
n'a pas besoin d'être échappé (il y a un non échappé;
avant leINIT
). Pourriez-vous essayer si l'utilisation d'une seule barre oblique inverse fonctionne?'script1.sql'\;RUNSCRIPT...
Si vous utilisez spring avec application.yml, ce qui suit fonctionnera pour vous
spring: datasource: url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS calendar
la source
Ce que Thomas a écrit est correct, en plus de cela, si vous souhaitez initialiser plusieurs schémas, vous pouvez utiliser ce qui suit. Notez qu'il y a une
\\;
séparation des deux instructions de création.réf: http://www.h2database.com/html/features.html#execute_sql_on_connection
la source
"Par défaut, lorsqu'une application appelle
DriverManager.getConnection(url, ...)
et que la base de données spécifiée dans l'URL n'existe pas encore, une nouvelle base de données (vide) est créée." - Base de données H2 .Addendum: @Thomas Mueller montre comment exécuter SQL lors de la connexion , mais parfois je crée et remplis simplement le code, comme suggéré ci-dessous.
la source
Si vous utilisez Spring Framework avec
application.yml
et que vous rencontrez des difficultés pour que le test trouve le fichier SQL sur laINIT
propriété, vous pouvez utiliser leclasspath:
notation.Par exemple, si vous avez un
init.sql
fichier SQL sur lesrc/test/resources
, utilisez simplement :la source