gpt4 book ai didi

xml - Liquibase 替换 标签值?

转载 作者:行者123 更新时间:2023-12-04 03:10:27 25 4
gpt4 key购买 nike

如果我要使用相同的变量但具有不同的值,如何替换下一个更改集的标签值。例子

<!-- TRANSLATION -->
<property name="localization.table" value="LOCALIZATION"/>
<property name="localization.locale" value="en_US"/>
<!-- -->
<property name="localization.key" value="translation.key"/>
<!-- Translation -->
<property name="localization.value" value="translation"/>
<!-- -->

<changeSet author="me" id="translate">

<insert tableName="${localization.table}">
<column name="KEY_">${localization.key}</column>
<column name="VALUE">${localization.value}</column>
<column name="LOCALE">${localization.locale}</column>
</insert>

<rollback>
<delete tableName="${localization.table}">
<!-- Doesnt work with regular '' symbols -->
<where>KEY_ = &apos;${localization.key}&apos; AND LOCALE = &apos;${localization.locale}&apos;</where>
</delete>
</rollback>

</changeSet>

这个例子只在我第一次第二次有效

Error setting up or running Liquibase: liquibase.exception.SetupException: liquibase.exception.SetupException: Error parsing line 150 column 67 of /patches/translate_me.xml: cvc-complex-type.2.4.a: Invalid content was found starting with element 'property'. One of '{"http://www.liquibase.org/xml/ns/dbchangelog":changeSet, "http://www.liquibase.org/xml/ns/dbchangelog":include, "http://www.liquibase.org/xml/ns/dbchangelog":includeAll}' is expected. -> [Help 1]



那这个替换怎么做呢?

最佳答案

默认情况下,Liquibase 属性是全局应用的,即使重新定义也将保持相同的值。

从 Liquibase 3.4.0 开始,有一个新的 global属性标签上的属性。设置 global="false"将该属性限制为 databaseChangeLog它是在中定义的,允许您在不同的 databaseChangeLog 中使用具有新值的属性.

如果你需要重新定义一个属性,它需要在一个新的 databaseChangeLog 内完成。 .在您的特定情况下,我相信您有语法错误,因为您试图在同一 databaseChangeLog 中的 changeSet 之后定义属性。

例子:

<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.5.xsd">
<property name="myProperty" value="foo" global="false"/>

<changeSet author="me" id="changeSet-1">
<!-- will insert `foo` -->
<insert tableName="my_table">
<column name="my_column">${myProperty}</column>
</insert>
</changeSet>
</databaseChangeLog>


<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.5.xsd">
<property name="myProperty" value="bar" global="false"/>

<changeSet author="me" id="changeSet-2">
<!-- will insert `bar` -->
<insert tableName="my_table">
<column name="my_column">${myProperty}</column>
</insert>
</changeSet>
</databaseChangeLog>

关于xml - Liquibase 替换 <property> 标签值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45794806/

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