我正在尝试通过终端执行一些回滚功能。我正在使用Maven和Liquibase作为我的JHipster项目。
我正在尝试标记数据库版本,并在某个时候按标记对特定版本进行回滚。这是我的liquibase配置文件(master - databasechangelog):
...(some change sets that alter tables, load data etc.)...
<!-- Tag database version 1.0 -->
<changeSet id="version1" author="jhipster">
<tagDatabase tag="version_1_0" />
</changeSet>
<!-- Version 1.0 ends here -->
<!-- Version 2.0 starts here -->
<include file="../../config/liquibase/changelog/20170123151950_added_column_to_table.xml" relativeToChangelogFile="true"/>
新的更改日志文件如下所示:
<changeSet id="20170123151950" author="jhipster">
<addColumn tableName="sometable">
<column name="somecolumn" type="varchar(32)"/>
</addColumn>
</changeSet>
我尝试过命令:
mvn liquibase:rollback -Dliquibase.rollbackTag = version_1_0
和
mvn liquibase:rollbackSQL -Dliquibase.rollbackTag = version_1_0
但没有发生任何事。
有没有人知道如何回滚到以前版本的数据库?
提前谢谢!
答案 0 :(得分:0)
您必须将rollback命令添加到changeset: 例如:
<rollback>
<dropColumn
columnName="somecolumn"
tableName="sometable"/>
</rollback>
答案 1 :(得分:0)
我遇到了类似的问题,我的changelogFile使用 include 标签导入其他更改日志。
我发现当数据库转换日志中的文件名列与发生脚本回滚的文件名不匹配时,它会无声地失败。
我正在运行liquibase版本3.5.3并通过maven运行回滚