我尝试标记格式化的SQL变更集,以便将匹配的ID和标记写入DATABASECHANGELOG表(用于回滚目的 - 请参阅下面的变更集片段)。 Phing liquibase任务正用于应用“更新”。命令单个更改日志。
虽然' tagDatabase'属性未列出格式化SQL更改日志(http://www.liquibase.org/documentation/sql_format.html),也不是logicalFilePath,这似乎工作正常!
如果Formatted SQL变更集不支持tagDatabase,有人可以告诉我吗?
非常感谢,
IR8
+++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
- changeset id:123 logicalFilePath:path-independent ALTER TABLE test1 添加栏目text_column text NULL;
- 回滚ALTER TABLE test1 DROP COLUMN text_column;
- 变更集ID:tag123 tagDatabase:123 ;
+++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++
运行Liquibase时出现意外错误:更改集没有SQL ../ db / changelog / databaseChangeLog.sql :: tag123 :: id
执行目标"迁移"失败的原因如下:C:\ data \ htdocs \ TestLiquibase \ deploy \ build.xml:49:1:Liquibase以代码-1退出
答案 0 :(得分:0)
我认为它不包括在内。
java类FormattedSqlChangeLogParser负责解析格式化的sql文件,并为此定义了几个Patterns
。 logicalFilePathPattern
只有tagDatabase
但没有。
答案 1 :(得分:0)
所以这还没有实现。 来自官方文档,
<块引用>当你运行updateToTag命令或带有liquibase.toTag属性的Maven更新目标,并且在变更日志中有一行对应tagDatabase变更集的DATABASECHANGELOG表中,updateToTag命令或更新Maven目标部署所有变更集从变更日志文件顶部的第一个变更集开始,向下移动到由 tagDatabase 变更类型指定的标签的变更集。
我们可以做一件事,在你执行完所有的 SQL 格式变更集之后,我们可以创建一个新的数据库标签变更集并使用 liquibase 进行更新
<?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-4.3.xsd">
<changeSet author="sivaramr" id="7">
<tagDatabase tag="v_1.0.0"/>
</changeSet>
</databaseChangeLog>
如果您正在使用任何 liquibase 命令工具或 liquibase 插件,那么您可以执行 tag 命令将标签添加到最后的更改日志中,如下所示
这里用gradle插件说明。
./gradlew tag -PliquibaseCommandValue=v1.0.0
在执行上述tag命令之前,可以通过tagexists命令来检查tag是否已经存在
./gradlew tagExists -PliquibaseCommandValue=v1.0.0