You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在application.yaml中设置Liquibase的duplicateFileMode属性

解决Spring Boot中Liquibase duplicateFileMode配置不生效问题

问题描述

Java项目使用Liquibase做数据库迁移时,遇到错误:

Found 2 files with the path 'db/changelog/db.changelog-master.yaml'

官方给出两种解决方向:限制liquibase.searchPath搜索路径,或设置liquibase.duplicateFileMode=WARN。其中通过静态代码块设置System.setProperty("liquibase.duplicateFileMode", "WARN")可以正常生效,但在application.yaml中通过spring.liquibase.parameters配置(无论用duplicate-file-mode还是duplicateFileMode)都无法解决原错误。

问题原因

spring.liquibase.parameters的作用是传递Liquibase变更集的自定义参数(比如给changelog文件中的${xxx}占位符赋值),而liquibase.duplicateFileMode属于Liquibase的全局系统属性,这类属性不能通过parameters节点配置。

正确配置方式

方式1:通过spring.liquibase.properties配置

Spring Boot的Liquibase自动配置提供了spring.liquibase.properties节点,专门用来传递Liquibase原生系统属性,配置如下:

spring:
  liquibase:
    properties:
      duplicateFileMode: WARN

方式2:添加JVM启动参数

在项目启动时添加JVM参数,直接设置系统属性:

-Dliquibase.duplicateFileMode=WARN

方式3:保留静态代码块(已验证生效)

如果上述方式不适用,可继续使用已验证有效的静态代码块方式:

static {
    System.setProperty("liquibase.duplicateFileMode", "WARN");
}

内容的提问来源于stack exchange,提问作者Roman Sobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:27:11