(Eu já vi o banco de dados H2 na memória - esquema de inicialização via questão Spring / Hibernate ; não é aplicável aqui.)
Gostaria de saber se há uma configuração em H2 que me permitirá criar automaticamente um esquema ao me conectar a ele. Se ajudar, estou interessado apenas no caso da memória.
H2 oferece suporte a vários modificadores separados por ponto-e-vírgula no final da URL, mas não encontrei um para criar automaticamente um esquema. Existe esse recurso?
<property name="hibernate.connection.url">jdbc:h2:mem:test;INIT=RUNSCRIPT FROM 'script1.sql'\\\;RUNSCRIPT FROM script2.sql'</property>
em sua configuração de hibernação.;
não precisa ter escape (há um sem escape;
antes doINIT
). Você poderia tentar se usar apenas uma barra invertida funciona?'script1.sql'\;RUNSCRIPT...
Se você estiver usando spring com application.yml, o seguinte funcionará para você
spring: datasource: url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS calendar
fonte
O que Thomas escreveu está correto, além disso, se você deseja inicializar vários esquemas, pode usar o seguinte. Observe que há uma
\\;
separação das duas instruções de criação.ref: http://www.h2database.com/html/features.html#execute_sql_on_connection
fonte
"Por padrão, quando um aplicativo chama
DriverManager.getConnection(url, ...)
e o banco de dados especificado na URL ainda não existe, um novo banco de dados (vazio) é criado." - H2 Database .Adendo: @Thomas Mueller mostra como executar SQL na conexão , mas às vezes eu apenas crio e preencheu o código, conforme sugerido abaixo.
fonte
Se você estiver usando o Spring Framework
application.yml
e tiver problemas para fazer o teste localizar o arquivo SQL naINIT
propriedade, pode usar aclasspath:
notação.Por exemplo, se você tiver um
init.sql
arquivo SQL nosrc/test/resources
, basta usar :fonte