如何配置Liquibase实现Spring每次启动时执行指定SQL文件
解决方案
Liquibase默认每个changeSet仅会执行一次,执行记录会存入DATABASECHANGELOG系统表,后续启动时会校验执行记录,已经运行过的changeSet不会重复触发。要让你的SQL文件每次启动都执行,只需给对应changeSet添加runAlways: true属性即可,同时你原配置中sqlFile下多了不必要的列表符号,需要同步修正:
databaseChangeLog: - changeSet: id: 0001 author: test dbms: postgres runAlways: true # 新增该行,标记该changeSet每次启动都要执行 changes: - sqlFile: relativeToChangelogFile: true path: data.sql
注意事项
- 该配置仅适合测试环境使用,生产环境请勿开启,避免反复插入重复数据或者覆盖生产数据
- 如果需要避免重复插入报错,可以在
data.sql的开头添加对应表的TRUNCATE语句先清理历史测试数据 - 如果同时开启了Spring原生的
spring.sql.init系列初始化配置,建议关闭,避免和Liquibase的执行逻辑冲突
内容的提问来源于stack exchange,提问作者Peter Penzov
相关产品推荐
相关产品推荐

