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

时间:2016-11-11 16:49:26

标签: java liquibase

当我尝试通过以下方式启动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

我已尝试重命名并将其移至其他位置。

我不明白为什么它给我这个除了。请求帮助

4 个答案:

答案 0 :(得分:2)

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

有了这个,我发现我的课堂路径有点破碎了。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

我通过删除pom.xml中的额外依赖项解决了这个问题

答案 3 :(得分:0)

在我的情况下,更新sql文件的文件夹路径中包含非ASCII字符(exp:éáű)。将更新文件移动到仅ASCII的文件夹路径中即可。

这与Liquibase 4.2.0(2020-11-13版本)一起提供。

[Rant]

想象一下在2020年支持Unicode。

Liquibase团队: nah

[/ Rant]