当我尝试通过以下方式启动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
我已尝试重命名并将其移至其他位置。
我不明白为什么它给我这个除了。请求帮助
答案 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]