liquibase.exception.ChangeLogParseException:读取迁移文件时出错:找到 2 个匹配 mychanges.xml 的文件

liquibase.exception.ChangeLogParseException: Error Reading Migration File: Found 2 files that match mychanges.xml

当我尝试通过以下方式启动 Liquibase 时:

JdbcConnection liquibaseConnection = new JdbcConnection(connection);

Liquibase liquibase = new Liquibase("mychanges.xml", 
new ClassLoaderResourceAccessor(),liquibaseConnection);

liquibase.update("dev");

当它要更新时我得到这个异常

liquibase.exception.ChangeLogParseException: Error Reading Migration File: Found 2 files that match mychanges.xml

并由以下原因引起:

Caused by: java.io.IOException: Found 2 files that match mychanges.xml

这看起来很奇怪,因为当我查看 war 文件时,它只包含一个 mychanges.xml

我试过重命名它并将其移动到另一个位置。

我不明白为什么它给我这个异常。请帮忙

我自己找的。抛出的异常不正确。 这实际上意味着找不到该文件。 这种情况非常奇怪的例外。

有了这个我发现我的类路径有点坏了。

我遇到了同样的问题,在ClassLoaderResourceAccessor.java中找到了以下原因:

Enumeration<URL> resources = classLoader.getResources(path);

因此,您的 xml 必须是类路径的一部分,而不是文件系统中的路径或类似的路径。

检查您的 pom.xml 。您的 pom.xml 中可能有额外的依赖项或 pom.xml 中的一些未使用的项目。 此外,您使用 pom 导入的项目具有相同的数据库文件名。

我通过从 pom.xml

中删除额外的依赖关系解决了这个问题

在我的例子中,更新 sql 文件的文件夹路径中包含非 ASCII 字符(表达式:éáű)。将更新文件移动到仅 ASCII 的文件夹路径有效。

这是 Liquibase 4.2.0(2020-11-13 版)。

[咆哮]

想象一下在 2020 年支持 Unicode。

Liquibase 团队:nah

[/咆哮]