Liquibase:如何以编程方式运行尚未应用的那些变更集?

时间:2014-10-01 10:55:20

标签: liquibase

我尝试用这种方式用luquibase Java API更新现有数据库:

Database database = DatabaseFactory.getInstance()
    .findCorrectDatabaseImplementation( 
        new JdbcConnection( connection ) 
    );
Liquibase liquibase = new Liquibase( 
    "db.changelog.xml", 
    new FileSystemResourceAccessor(), 
    database 
);
liquibase.update( "" );

但是它会尝试应用所有更改集,包括之前已经应用过的更改集。我错了什么?

1 个答案:

答案 0 :(得分:1)

代码看起来是正确的,我的猜测是你有一个不同于以前运行它的类路径。 Liquibase使用id + author + filepath组合标识每个变更集,因此如果您当前正在引用db.changelog.xml作为" db.changelog.xml"但之前使用过" output / db.changelog.xml"或" com / example / db.changelog.xml"它会看到它不同。

如果你"从databasechangelog"中选择*您将看到存储的内容作为每个changeSet的路径。