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

时间:2017-12-08 05:19:27

标签: spring-boot liquibase

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

这是我通过spring boot应用程序初始化liquibase的方法。

我已经检查了databasechangelog表,我可以找到该变更集条目,并且已成功执行。

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

1 个答案:

答案 0 :(得分:3)

问题可能出在您的更改日志的名称上。如果您从其他application / 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">