簡體   English   中英

我們如何在 Liquibase XML 更改日志中使用 xinclude?

[英]How can we use xinclude in Liquibase XML changlelog?

我正在嘗試將另一個 xml 文件包含在我的更改日志中,該文件是 XML 文件的一個片段。 每當我在 liquibase 中執行我的更改日志時,它都會成功執行(沒有任何解析錯誤),但沒有在數據庫中創建表。

我不確定我們是否可以在 liquibsae 中使用 xInclude,但我認為這應該是可能的,因為我們在 liquibase 中使用了 xml。 另外,我在 liquibase 和官方文檔中找不到任何 xinclude 示例。

變更日志.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>

員工文件

<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解析 changeLogs。

<xi:inlude>被忽略。 事實上,即使你輸入<xi:foo-bar> ,changeLog 仍然會被成功解析,但<xi:...>將被忽略。

所以,我建議使用<include>標簽來包含來自其他 changeLog 文件的內容或使用<sqlFile>來包含 sql 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM