运行3.2版本出现错误
[WARN] liquibase - schema_reference。4:读取架构文档"http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.2.xsd"失败,因为1)找不到文档;2)文件无法读取;3)文档的根元素不是。
当我寻找http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.2.xsd时,它不在那里,虽然http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd在。
我遇到了这个https://liquibase.jira.com/browse/CORE-1840,我解释说你不需要访问互联网来获取dbchangelog-3.2.xsd。这似乎没有帮助,当互联网可用,但。xsd不在那里。
我已经恢复到3.1,但想知道我的3.2问题的根本原因。
将liquibase
版本更新到最新版本解决了我的问题
<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.6.3</version>
</dependency>
我通过在应用程序中分发模式并在本地引用它(相对路径)来解决这个问题。在下面的示例中,我将模式文件与changelog放在同一个文件夹中。
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog dbchangelog-3.1.xsd">
<!-- all the things -->
</databaseChangeLog>
Liquibase没有在Internet上查找xsd。http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.2.xsd将被替换为Java资源路径
更详细的信息可以在这里找到
我修复了这里发现的问题。
该解决方案仅适用于使用maven-liquibase-plugin的人。您必须使用以下选项-Dprefer.internal.xsd=true
运行liquidbase迁移:
mvn -Dprefer.internal.xsd=true liquibase:update
检查changlog.xml文件头是否有xsd文档版本。如果不匹配,将在春季启动时匹配:运行