(Ya he visto la base de datos H2 en la memoria: esquema de inicio a través de la pregunta Spring / Hibernate ; no es aplicable aquí).
Me gustaría saber si hay una configuración en H2 que me permita crear automáticamente un esquema al conectarme a él. Si ayuda, solo me interesa el caso en memoria.
H2 admite varios modificadores separados por punto y coma al final de la URL, pero no encontré ninguno para crear automáticamente un esquema. ¿Existe tal característica?
<property name="hibernate.connection.url">jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'script1.sql'\\\;RUNSCRIPT FROM script2.sql'</property>
en su configuración de hibernación.;
no es necesario escapar (hay un sin escapar;
antes deINIT
). ¿Podría intentarlo si usar solo una barra invertida funciona?'script1.sql'\;RUNSCRIPT...
Si está utilizando spring con application.yml, lo siguiente funcionará para usted
spring: datasource: url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS calendar
fuente
Lo que Thomas ha escrito es correcto, además de eso, si desea inicializar múltiples esquemas, puede usar lo siguiente. Tenga en cuenta que hay una
\\;
separación de las dos declaraciones de creación.ref: http://www.h2database.com/html/features.html#execute_sql_on_connection
fuente
"De forma predeterminada, cuando una aplicación llama
DriverManager.getConnection(url, ...)
y la base de datos especificada en la URL aún no existe, se crea una nueva base de datos (vacía)". - Base de datos H2 .Anexo: @Thomas Mueller muestra cómo ejecutar SQL en la conexión , pero a veces solo creo y completo el código, como se sugiere a continuación.
fuente
Si está utilizando Spring Framework
application.yml
y tiene problemas para hacer que la prueba encuentre el archivo SQL en laINIT
propiedad, puede usar laclasspath:
notación.Por ejemplo, si tiene un
init.sql
archivo SQL en elsrc/test/resources
, simplemente use :fuente