在 Spring Boot 应用程序中使用Flyway时,如何在H2中加载初始数据?

myss37ts  于 2023-03-18  发布在  Spring
关注(0)|答案(2)|浏览(172)

我正在使用Flyway to migration创建一个Sping Boot 应用程序,并希望使用内存数据库作为开发配置文件,但问题是每次我重新启动应用程序时数据都会丢失。因此,当我的应用程序在开发配置文件中启动时,我需要插入一些数据。我尝试将名为data.sql的文件放在src/main/resource上,以便在应用程序启动时弹出加载它,但它不起作用(它没有运行脚本)。我试图把INIT=runscript from 'classpath:data.sql'放在h2 url中,但是它试图在Flyway迁移执行之前运行它,所以表还不存在。有人能给予我一个其他的方法吗?
我的申请.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
z8dt9xmd

z8dt9xmd1#

根据文档,可以配置一个特定于配置文件的定制flyway spring.flyway.locations。当配置文件处于活动状态时,特定于配置文件的脚本将运行。因此,配置的开发配置文件将满足此要求。
初始化脚本可以作为迁移文件夹的一部分放置,迁移文件夹将运行并填充数据库。
示例可在here中找到

9rnv2umw

9rnv2umw2#

我有同样的问题来解决它,我添加了这个配置:

对我来说,您需要添加以修复INSERT by flyway的配置是:ddl-auto: none
因为jpa尝试在flyway后更新数据库,这很奇怪,但对我来说很有效
谢谢你的帮忙

相关问题