Liquibase无法为oracle找到ChangeLogHistoryService

时间:2015-02-27 17:00:35

标签: java spring oracle liquibase

最近,在我的机器上,每当我尝试使用Liquibase加载java项目时,我都会收到错误

Caused by: liquibase.exception.UnexpectedLiquibaseException: Cannot find ChangeLogHistoryService for oracle
    at liquibase.changelog.ChangeLogHistoryServiceFactory.getChangeLogService(ChangeLogHistoryServiceFactory.java:73)
    at liquibase.Liquibase.checkLiquibaseTables(Liquibase.java:724)

除了源文件之外,我无法找到有关此内容的任何信息。 我所知道的是,使用相同源代码的同一个项目似乎可以在其他计算机上运行。据我所知,所有的配置都是一样的。

首先想知道什么可能导致这个问题?

3 个答案:

答案 0 :(得分:1)

这意味着Liquibase期望在数据库中找到的一个表(liquibasechangelog或liquibasechangeloglock)已被删除。如果它在其他计算机上工作,则可能意味着您连接的数据库也不同。听起来您可能正在尝试连接到localhost上的数据库,这可以解释其中的差异。

答案 1 :(得分:1)

该错误看起来更像是一个类加载器问题。 Liquibase有一个插件系统,它依赖于在类路径中查找类实现,包括内置类。 Liquibase正在寻找支持oracle的ChangeLogHistoryService的实现,并且它没有找到它应该是的liquibase.changelog.StandardChangeLogHistoryService类。

您看到的是否有任何早期错误?如果你使用logLevel = DEBUG运行liquibase,它也可能输出更好的线索,了解不合格类的原因。

答案 2 :(得分:0)

我将liquibase版本(从3.1.1)更新到3.2.0,问题就消失了。

我确实需要修复DATABASECHANGELOG表中的一些校验和代码(16中的3条记录)。它不是全部的事实可能指出问题的可能起源?可能?

现在一切正常,新版本。如果将来问题再次出现,我会再次研究这个问题。

谢谢大家的支持。