是否可以让 H2 在内存数据库中自动创建架构?
(我已经通过Spring/Hibernate问题看到了H2数据库在内存中 - 初始化模式;它在这里不适用。
我想知道H2中是否有一个设置,允许我在连接到它时自动创建架构。如果它有帮助,我只对内存中的情况感兴趣。
H2支持URL末尾的各种分号分隔修饰符,但我没有找到一个用于自动创建架构的修饰符。有这样的功能吗?
(我已经通过Spring/Hibernate问题看到了H2数据库在内存中 - 初始化模式;它在这里不适用。
我想知道H2中是否有一个设置,允许我在连接到它时自动创建架构。如果它有帮助,我只对内存中的情况感兴趣。
H2支持URL末尾的各种分号分隔修饰符,但我没有找到一个用于自动创建架构的修饰符。有这样的功能吗?
是的,H2 支持在连接时执行 SQL 语句。您可以运行一个脚本,也可以只运行一两个语句:
String url = "jdbc:h2:mem:test;" +
"INIT=CREATE SCHEMA IF NOT EXISTS TEST"
String url = "jdbc:h2:mem:test;" +
"INIT=CREATE SCHEMA IF NOT EXISTS TEST\\;" +
"SET SCHEMA TEST";
String url = "jdbc:h2:mem;" +
"INIT=RUNSCRIPT FROM '~/create.sql'\\;" +
"RUNSCRIPT FROM '~/populate.sql'";
请注意,双反斜杠 () 仅在 Java 中是必需的。内前的反斜杠是必需的。\\
;
INIT
如果您将弹簧与 一起使用,则以下内容将为您工作:application.yml
spring:
datasource:
url: jdbc:h2:mem:mydb;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL;INIT=CREATE SCHEMA IF NOT EXISTS calendar