Spring boot 每次web应用启动时,Spring Boot with H2都在运行data.sql,这正常吗?
我有一个带有嵌入式H2数据库的Spring启动应用程序(配置为将数据库保存到磁盘) 我有一个SQL文件Spring boot 每次web应用启动时,Spring Boot with H2都在运行data.sql,这正常吗?,spring-boot,h2,Spring Boot,H2,我有一个带有嵌入式H2数据库的Spring启动应用程序(配置为将数据库保存到磁盘) 我有一个SQL文件data.SQL,如果它不存在,它会创建一个users表,并在users表中插入一个admin帐户 应用程序启动时,data.sql会自动运行,一切正常 问题是,每次应用程序启动时,它都会运行data.sql,并在users表中创建另一条admin记录 问题:如何配置它,使其仅在数据库尚不存在时运行data.sql 我在application.properties文件中的设置如下所示,因此数据将
data.SQL
,如果它不存在,它会创建一个users
表,并在users
表中插入一个admin
帐户
应用程序启动时,data.sql
会自动运行,一切正常
问题是,每次应用程序启动时,它都会运行data.sql
,并在users
表中创建另一条admin
记录
问题:如何配置它,使其仅在数据库尚不存在时运行data.sql
我在application.properties
文件中的设置如下所示,因此数据将保存到磁盘,然后运行data.sql
文件来创建数据库
spring.datasource.url=jdbc:h2:file:./data/myapplication-1.0
spring.jpa.hibernate.ddl-auto=update
每次web应用启动时,Spring Boot with H2都在运行data.sql,这正常吗
是的这是预期的行为。H2设计用于在每次存在任何data.sql
文件时加载数据。因为H2是一个内存数据库,并且预期在程序退出后数据不会持久化。这就是为什么每次都会加载数据。如果您想要一些定制,您需要以编程方式检查它,或者在data.sql
文件中存在逻辑(如果值存在,则更新else insert)
还有一种简单的方法,在数据初始化之后,您可以设置一个新的配置值,这样数据就不会从data.sql
文件加载
您可以使用属性spring.datasource.initialization mode=never
停止每次加载数据库
参考: