gpt4 book ai didi

liquibase - 如何仅执行 liquibase 中未读的特定变更集?

转载 作者:行者123 更新时间:2023-12-04 02:18:57 26 4
gpt4 key购买 nike

我在现有的变更日志文件中添加了一些新的变更集,并且只想执行新插入的变更集中的 2 个。当我在 liquibase 中给出更新命令时,它会更新所有未读的变更集并更新数据库。但是我只想执行变更日志文件中这些新插入的变更集中的 2 个。有没有办法在 liquibase 中做到这一点?如果是,那怎么可能?

最佳答案

一种方法是用标签标记相关的变更集,然后在 liquibase update 命令中使用该标签。

blog post on labels描述了它们的用途。

这是一个与您在下面评论中描述的内容相匹配的示例。

更新日志

<?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.5.xsd">

<changeSet id="1" author="steve" labels="labelOne">
<createTable tableName="tableOne">
<column name="id" type="int" autoIncrement="true">
<constraints primaryKey="true" nullable="false" />
</column>
</createTable>
</changeSet>

<changeSet id="2" author="steve" labels="labelTwo">
<comment>Creating table "tableTwo"</comment>
<createTable tableName="tableTwo">
<column name="id" type="int" autoIncrement="true">
<constraints primaryKey="true" nullable="false" />
</column>
</createTable>
</changeSet>

<changeSet id="3" author="steve" labels="labelThree">
<comment>Creating table "tableThree"</comment>
<createTable tableName="tableThree">
<column name="id" type="int" autoIncrement="true">
<constraints primaryKey="true" nullable="false" />
</column>
</createTable>
</changeSet>

</databaseChangeLog>

命令执行

如果你想更新并只创建表一,你可以使用这个命令(如果你使用命令行,并假设你有一个指定所有连接信息等的 liquibase.properties 文件)

liquibase --changeLogFile=changelog.xml --labels=labelOne update

如果你想应用两个变更集,你可以使用这样的命令:

liquibase --changeLogFile=changelog.xml --labels="labelOne and labelTwo" update

关于liquibase - 如何仅执行 liquibase 中未读的特定变更集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32458042/

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