Liquibase 正在尝试执行先前已执行过的更改集,从而引发表已存在的错误

Dee*_*ore 6 liquibase spring-boot

    @Bean
    public SpringLiquibase liquibase()  {
        SpringLiquibase liquibase = new SpringLiquibase();
        liquibase.setDataSource(vsDataSource());        
        liquibase.setChangeLog("classpath:liquibase/avt_changelog_master.xml"); 
        return liquibase;
    }
Run Code Online (Sandbox Code Playgroud)

这就是我通过 Spring Boot 应用程序初始化 liquibase 的方式。

我检查了数据库更改日志表,可以发现该更改集条目在那里并且已成功执行。

为什么 liquibase 不跳过该变更集并执行新的唯一变更集 ID。

bil*_*lak 9

问题可能出在您的变更日志的名称上。如果您从其他应用程序/maven/... 中执行该变更日志并且未指定,logicalFilePath那么 liquibase 可能会将其视为不同的变更日志。尝试在您的变更日志定义中进行设置logicalFilePath,然后尝试执行它。

这是例子:

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"
                   logicalFilePath="db-changelog-master.xml">
Run Code Online (Sandbox Code Playgroud)