我尝试用这种方式用luquibase Java API更新现有数据库:
Database database = DatabaseFactory.getInstance()
.findCorrectDatabaseImplementation(
new JdbcConnection( connection )
);
Liquibase liquibase = new Liquibase(
"db.changelog.xml",
new FileSystemResourceAccessor(),
database
);
liquibase.update( "" );
但是它会尝试应用所有更改集,包括之前已经应用过的更改集。我错了什么?
答案 0 :(得分:1)
代码看起来是正确的,我的猜测是你有一个不同于以前运行它的类路径。 Liquibase使用id + author + filepath组合标识每个变更集,因此如果您当前正在引用db.changelog.xml作为" db.changelog.xml"但之前使用过" output / db.changelog.xml"或" com / example / db.changelog.xml"它会看到它不同。
如果你"从databasechangelog"中选择*您将看到存储的内容作为每个changeSet的路径。