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

如何配置liquibase以使用表DATABASECHANGELOG上文件名列的相对路径?

陆高峰
2023-03-14

我使用的是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的方式。为了获得最佳结果,它应该是相对路径”

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

知道我可以在哪里配置这个吗?

共有1个答案

杨良平
2023-03-14

可以在中使用属性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检测到文件名、作者和id组合的变更集。因此,如果您为已经运行的内容更改logicalFilePath,Liquibase将认为这是一个新的变更日志,并将再次尝试运行文件中的所有变更集。

 类似资料:
  • 我想从我的changelog文件生成一个SQL文件,该文件只包含databasechangelog表,并在其中插入数据库的当前状态。在liquibase文档中有一篇文章(http://www.liquibase.org/2015/07/without-a-connection.html),其中写道,您可以将设置为,但在我的例子中它不起作用。我的属性文件如下所示: 但是,当我通过命令行使用时,它生成

  • 我知道liquibase将创建一个databasechangelog来检查是否应用了一个更改集。但是如果我让应用程序自动运行它,FILENAME列将存储changelog文件的相对路径。但是如果我运行mvn liquiBase:status,它会说我的更改集没有被应用,原因是在liquiBase.properties文件中,我将changelog的路径定义为绝对路径(即changelogfile=

  • 我是liquibase的新手,我想在生产中的数据库上使用它。这是一个很小的应用程序,但我不想手工创建模式,而是想使用更专业的东西,比如LiquiBase。 我计划做的是在生产中的当前模式和新模式之间为新应用程序准备一个changelog。我已经遵循了许多教程,但仍然缺少一些东西。输出changelog.xml总是导入所有模式,并且与现有模式没有区别。我看到liquibase必须创建表DATABAS

  • (上面的代码) 我已经通过liquibase进行了调试,但在: 在我的例子中,在第一个循环中返回,然后以此类推,直到、和。但是条件总是为false,因为包含或 这真的是liquibase自3.5.0以来的bug吗?如果我降级到liquibase 3.4.2,它可以完美地工作。如果我使用而不是,它也可以工作,但是在我的实际应用程序中,我有更多的变更集,我不想手动列出它们。 我已经找到了一些关于这方面

  • 我有一个系统。NET客户端使用Kerberos对Java服务器进行身份验证。一切正常,但我正在努力改进服务器配置。目前在C:\的根目录下需要一个keytab文件,因为我的jaas.conf看起来像这样: 我试图使属性成为一个相对路径,但运气不好。我尝试过: 所有这些都会导致异常,因此显然找不到keytab文件。 我已经搜索并阅读了文档,并为此撞到了墙上。有人能透露我实现这一目标所需的魔法咒语吗?