Spring 引导 h2 初始数据未首先创建 table
Spring Boot h2 initial data not creating table first
我正在尝试使用 h2 数据库创建一个小型 Spring 启动设置。
现在我有一个奇怪的问题,我无法解决。
如果我不为初始数据创建 data.sql
,应用程序会正常启动并创建我的实体 tables.
如果我为初始数据创建一个 data.sql
并保留上一步中现有的 table,则一切正常。
如果我为初始数据创建 data.sql
并删除我现有的 h2 文件,我会收到无法导入数据的错误,因为缺少 table。
如何告诉 Spring 在导入初始数据之前创建我的 table?
这是 Spring Boot 2.5 发行说明中的 covered:
By default, data.sql
scripts are now run before Hibernate is initialized. This aligns the behavior of basic script-based initialization with that of Flyway and Liquibase. If you want to use data.sql
to populate a schema created by Hibernate, set spring.jpa.defer-datasource-initialization
to true
. While mixing database initialization technologies is not recommended, this will also allow you to use a schema.sql
script to build upon a Hibernate-created schema before it’s populated via data.sql
.
我正在尝试使用 h2 数据库创建一个小型 Spring 启动设置。
现在我有一个奇怪的问题,我无法解决。
如果我不为初始数据创建 data.sql
,应用程序会正常启动并创建我的实体 tables.
如果我为初始数据创建一个 data.sql
并保留上一步中现有的 table,则一切正常。
如果我为初始数据创建 data.sql
并删除我现有的 h2 文件,我会收到无法导入数据的错误,因为缺少 table。
如何告诉 Spring 在导入初始数据之前创建我的 table?
这是 Spring Boot 2.5 发行说明中的 covered:
By default,
data.sql
scripts are now run before Hibernate is initialized. This aligns the behavior of basic script-based initialization with that of Flyway and Liquibase. If you want to usedata.sql
to populate a schema created by Hibernate, setspring.jpa.defer-datasource-initialization
totrue
. While mixing database initialization technologies is not recommended, this will also allow you to use aschema.sql
script to build upon a Hibernate-created schema before it’s populated viadata.sql
.