我正在使用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的方式,它可以是绝对路径或相对路径。为达到最佳效果,应将其作为相对路径”
但是我找不到有关此配置位置的任何代码示例。
有什么想法可以在这里配置吗?
答案 0 :(得分:2)
您可以在logicalFilePath
标签中使用属性<databaseChangeLog>
:
<?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会认为这是一个新的更改日志,并将尝试再次运行文件中的所有更改集。