gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:13:59 26 4
gpt4 key购买 nike

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

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”或“c​​om/example/db.changelog.xml”,它将把它看作是不同的。

如果您“select * from databasechangelog”,您将看到存储的内容作为每个变更集的路径。

关于java - Liquibase:如何以编程方式仅运行那些尚未应用的变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26139744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com