gpt4 book ai didi

java - 我们如何在 Liquibase XML changlelog 中使用 xinclude ?

转载 作者:行者123 更新时间:2023-12-02 07:56:09 26 4
gpt4 key购买 nike

我正在尝试将另一个 xml 文件包含到我的更改日志中,该文件是 XML 文件的片段。每当我在 liquibase 中执行更改日志时,它都会成功执行(没有任何解析错误),但数据库中不会创建任何表。

我不确定我们是否可以在 liquibsae 中使用 xInclude,但我认为这应该是可能的,因为我们在 liquibase 中使用了 xml。另外,我无法在 liquibase 和官方文档中找到 xinclude 的任何示例。

Changelog.xml

<?xml version="1.0" encoding="UTF-8"?>
<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
http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"
xmlns:xi="http://www.w3c.org/2001/Xinclude">

<changeSet id="id-1234"
author="umarTahir">

<comment>creates table: employee</comment>
<xi:include
href="employee.xml" parse="xml"
xpointer="title"/>

<rollback>
<dropTable schemaName="employee_test" tableName="employee" />
</rollback>
</changeSet>

</databaseChangeLog>

employee.xml

<createTable tableName="employee" xml:id="title">
<column name="employee_id" type="UUID">
<constraints primaryKey="true"
primaryKeyName="employee_pkey" />
</column>
<column name="first_name" type="TEXT" />
<column name="middle_name" type="TEXT" />
<column name="last_name" type="TEXT" />
<column name="email" type="TEXT" />
<column name="n_created_by" type="TEXT" />
<column name="n_created" type="TIMESTAMP WITHOUT TIME ZONE" />
<column name="n_last_modified_by" type="TEXT" />
<column name="n_last_modified"
type="TIMESTAMP WITHOUT TIME ZONE" />
</createTable>

最佳答案

如果我错了,请纠正我,但据我了解,liquibase 是根据 dbchangelog-{version}.xsd 解析变更日志的。 .

<xi:inlude>正在被忽视。事实上,即使您输入 <xi:foo-bar>变更日志仍然会被成功解析,但是 <xi:...>将被忽略。

所以,我建议使用<include>标记以包含其他变更日志文件的内容或使用 <sqlFile>包含 sql 文件。

关于java - 我们如何在 Liquibase XML changlelog 中使用 xinclude ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59836558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com