Liquibase Changeset - 如何为变更集使用备用唯一标识符?

时间:2017-05-19 04:02:30

标签: liquibase

  • 在liquibase中,databasechangelog表中有3列,它们唯一地标识变更集并指示变更集是否已被执行。

    列是:

    • ID
    • 作者
    • FILENAME(更改日志文件路径)

    当Liquibase执行databaseChangeLog时,它会按顺序读取changeSets,并且对于每一个,检查“databasechangelog”表以查看是否已经运行了id / author / filename的组合。

    我在自动部署的环境中使用liquibase,因此我的变更集的文件路径不断变化。因此,相同的变更集反复执行,这是不受欢迎的行为。

    有没有办法从组合中排除文件名,该组合是变更集的唯一标识符?我基本上希望liquibase只使用ID和Author。

    谢谢

    亲切的问候,

    托拜厄斯

  • 1 个答案:

    答案 0 :(得分:1)

    我认为您需要做的就是编辑更改日志,以便设置logicalFilePath属性。这是一个例子:

    <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.4.xsd"
                       logicalFilePath="changelog.xml">
        ...
    </databaseChangeLog>
    

    如有必要,还可以在各个变更集上设置logicalFilePath属性。

    关于此的一些好的论坛帖子:http://forum.liquibase.org/topic/i-need-to-ignore-the-filename-in-the-processing-to-see-if-a-change-set-has-already-been-applied