我正在使用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
2条答案
按热度按时间z8dt9xmd1#
根据文档,可以配置一个特定于配置文件的定制flyway
spring.flyway.locations
。当配置文件处于活动状态时,特定于配置文件的脚本将运行。因此,配置的开发配置文件将满足此要求。初始化脚本可以作为迁移文件夹的一部分放置,迁移文件夹将运行并填充数据库。
示例可在here中找到
9rnv2umw2#
我有同样的问题来解决它,我添加了这个配置:
对我来说,您需要添加以修复INSERT by flyway的配置是:
ddl-auto: none
因为jpa尝试在flyway后更新数据库,这很奇怪,但对我来说很有效
谢谢你的帮忙