在 spring 引导应用程序上使用 flyway 时如何在 H2 中加载初始数据?
How to load initial data in H2 when using flyway on spring boot application?
我正在使用 Flyway 创建一个 spring 引导应用程序进行迁移,并希望使用内存数据库进行开发配置文件,但问题是每次重新启动应用程序时数据都会丢失。因此,当我的应用程序在开发配置文件中启动时,我需要插入一些数据。我试图在 src/main/resource 上放置一个名为 data.sql
的文件,以便在应用程序启动时 spring 加载它,但它不起作用(它没有 运行 脚本)。我试图将 INIT=runscript from 'classpath:data.sql'
放在 h2 url 中,但它会在执行 Flyway 迁移之前尝试 运行 它,因此表尚不存在。谁能给我其他方法吗?
我的application.yml:
spring:
datasource:
url: jdbc:h2:mem:testdb;IFEXISTS=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
show-sql: true
hibernate:
ddl-auto: none
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
flyway:
enabled: true
根据 documentation ,可以配置特定于配置文件的自定义飞路 spring.flyway.locations
。当该配置文件处于活动状态时,特定于配置文件的脚本 运行s。因此,配置的开发配置文件将满足此要求。
初始化脚本可以作为迁移文件夹的一部分放置,该文件夹将运行填充数据库。
可以找到示例here
我正在使用 Flyway 创建一个 spring 引导应用程序进行迁移,并希望使用内存数据库进行开发配置文件,但问题是每次重新启动应用程序时数据都会丢失。因此,当我的应用程序在开发配置文件中启动时,我需要插入一些数据。我试图在 src/main/resource 上放置一个名为 data.sql
的文件,以便在应用程序启动时 spring 加载它,但它不起作用(它没有 运行 脚本)。我试图将 INIT=runscript from 'classpath:data.sql'
放在 h2 url 中,但它会在执行 Flyway 迁移之前尝试 运行 它,因此表尚不存在。谁能给我其他方法吗?
我的application.yml:
spring:
datasource:
url: jdbc:h2:mem:testdb;IFEXISTS=FALSE
username: sa
password:
driver-class-name: org.h2.Driver
jpa:
show-sql: true
hibernate:
ddl-auto: none
properties:
hibernate:
dialect: org.hibernate.dialect.H2Dialect
flyway:
enabled: true
根据 documentation ,可以配置特定于配置文件的自定义飞路 spring.flyway.locations
。当该配置文件处于活动状态时,特定于配置文件的脚本 运行s。因此,配置的开发配置文件将满足此要求。
初始化脚本可以作为迁移文件夹的一部分放置,该文件夹将运行填充数据库。
可以找到示例here