【问题标题】:How do I configure liquibase to use relative path for the filename column on table DATABASECHANGELOG?如何配置 liquibase 以使用表 DATABASECHANGELOG 上文件名列的相对路径?
【发布时间】:2019-11-23 18:54:38
【问题描述】:

我使用的是 liquibase 3.4 版

执行 liquibase 变更集后,我在变更日志中看到以下条目

INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, DESCRIPTION, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE) VALUES ('1561715333', 'userx', 'C:/TeamCity.BuildAgent/work/CMSLiquibase/src/main/resources/releases/1/core/ddl/JIRA-1000-ADD_COLUMN.xml', SYSTIMESTAMP, 17, '7:762a7c8960445ef94da88c10a81acd79', 'addColumn', 'Adding column', 'EXECUTED', NULL, NULL, '3.4.0');

对于文件名,liquibase 生成完整路径“C:/TeamCity.BuildAgent/work/CMSLiquibase/src/main/resources/releases/1/core/ddl/JIRA-1000-ADD_COLUMN.xml”相对路径“src/main/resources/releases/1/core/ddl/JIRA-1000-ADD_COLUMN.xml”

liquibase 文档说文件名应该是“更改日志的路径。这可能是绝对路径或相对路径,具体取决于更改日志传递给 Liquibase 的方式。为了获得最佳结果,它应该是相对路径”

但是我找不到任何关于它的配置位置的代码示例。

知道我可以在哪里进行配置吗?

【问题讨论】:

    标签: liquibase


    【解决方案1】:

    您可以在<databaseChangeLog>标签中使用属性logicalFilePath

    <?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"
    
        logicalFilePath="my_changelog.xml"> <<<<HERE
    
        ....
    </databaseChangeLog>
    

    不幸的是,没有全局设置可以做到这一点。您需要注意为您拥有的每个更改日志文件执行此操作。

    注意

    如果您已经运行了现有的更改日志,那么如果您更改它,则需要更改数据库中的值! Liquibase 使用 filename、作者和 id 的组合检测变更集。因此,如果您将 logicalFilePath 更改为已运行的内容,Liquibase 会认为这是一个新的更改日志,并会尝试再次运行文件中的所有更改集。

    【讨论】:

    • 我希望某个地方有一个全局设置,以避免将其添加到数百个变更集中。
    • @Navs:我也是 :( - 但我认为没有。
    猜你喜欢
    • 1970-01-01
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    相关资源
    最近更新 更多