我尝试用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",则会将其视为不同。
如果您"从数据库更改日志中选择*",您将看到存储为每个更改集的路径。