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



我尝试用luquibase Java API以这种方式更新现有的DB:

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

但它试图应用所有的变更集,包括之前已经应用的变更集。我做错了什么?

代码看起来是正确的,我猜您的类路径与以前运行它时不同。Liquibase用id+author+filepath组合标识每个变更集,因此,如果您当前将db.changelog.xml引用为"db.changelog.xml",但以前使用的是"output/db.changelog.xml"或"com/example/db.changelog.xml",则会将其视为不同。

如果您"从数据库更改日志中选择*",您将看到存储为每个更改集的路径。

相关内容

  • 没有找到相关文章

最新更新