当前位置: 首页 > 知识库问答 >
问题:

液化酶替换标记值?

东郭自强
2023-03-14

如果要使用相同的html" target="_blank">变量但值不同,如何替换下一个更改集的标记值。实例

<!-- 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>

这个例子只适用于第一次和第二次

设置或运行Liquibase时出错:Liquibase。例外设置例外:液化。例外SetupException:分析/patches/translate\me的第150行第67列时出错。xml:cvc复杂类型。2.4.a: 发现以元素“property”开头的内容无效。“{”之一http://www.liquibase.org/xml/ns/dbchangelog:变更集http://www.liquibase.org/xml/ns/dbchangelog“:包括,”http://www.liquibase.org/xml/ns/dbchangelog应为“:includeAll}”-

那么怎么做这个更换呢?

共有1个答案

乐正明辉
2023-03-14

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

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

如果您需要重新定义属性,则需要在新的数据库ChangeLog中完成。在您的特定情况下,我相信您有语法错误,因为您试图在同一个数据库ChangeLog中定义一个更改后的属性Set。

例子:

<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>
 类似资料:
  • 我试图在命令提示符下执行命令:

  • 我问是因为我试过了,但失败了。问题似乎是liquibase需要关于它运行的主机的信息来锁定并写入DATABASECHANGELOG。 因此,当我在ECS Fargate集群中启动spring boot应用程序时,我看到: 有什么办法可以解决这个问题吗?或者我必须下注并使用AWS ECS EC2吗?通常我会通过检查我的/etc/主机来解决这个问题,以确保其中定义了一个localhost。但我不知道我

  • 我正在处理一个CMS格式的文本块像这样。 <代码> 双线返回<代码> 因为文本块已经有一个开头

  • 我有一小套脚本来管理应用程序的构建/测试/部署。最近,我决定切换到Liquibase进行db模式管理。这个脚本将在开发人员机器上工作,在那里它会定期清理和重建他们的数据库,并且在部署的环境中我们只会添加新的变更集。 当这个程序第一次在部署的环境中运行时,我需要检测Liquibase是否已经运行,然后运行changelogSync与现有表同步。 除了手动检查数据库changelog表是否存在之外,L

  • 这是我的密码 我想替换字体标签,并把span标签。在这将取代第一个字体标签但不是第二个标签

  • 下面是我已经尝试过的代码: 有什么技巧或解决办法我可以实现它?