首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让liquibase cli回滚其他应用发起的changeSets?

如何让liquibase cli回滚其他应用发起的changeSets?
EN

Stack Overflow用户
提问于 2021-01-13 05:50:07
回答 1查看 33关注 0票数 0

我的数据库更改日志如下所示:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<databaseChangeLog
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
        http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.4.xsd">

    <changeSet id="10" author="ez">
        <createTable tableName="SomeTable">
            <column name="someCol" type="int" />
        </createTable>
    </changeSet>
    <changeSet id="20" author="ez">
        <tagDatabase tag="0.0.1"/>
    </changeSet>
    <changeSet id="30" author="ez">
        <createTable tableName="AnotherTable">
            <column name="anotherCol" type="int" />
        </createTable>
    </changeSet>
    <changeSet id="40" author="ez">
        <tagDatabase tag="0.0.2"/>
    </changeSet>
</databaseChangeLog>

我的liquibase.propeties是这样的:

代码语言:javascript
复制
changeLogFile=changelog.xml
url=jdbc:mysql://[redacted]@localhost:3306/[redacted]

当我通过这样的代码运行liquibase迁移时:Liquibase("classpath:db/liquibase/changelog.xml", ClassLoaderResourceAccessor(), db).update(Contexts()),它可以很好地迁移。

但是当我尝试像这样通过命令行界面回滚时:C:\Projects\[redacted]\src\main\resources\db\liquibase>java -jar "C:\Program Files\liquibase\liquibase.jar" --classpath=mysql-connector-java-8.0.22.jar rollbackSQL 0.0.1,我得到了以下SQL:

代码语言:javascript
复制
--  *********************************************************************
--  Rollback to '0.0.1' Script
--  *********************************************************************
--  Change Log: changelog.xml
--  Ran at: 1/12/21 4:36 PM
--  Against: user@[redacted]@jdbc:mysql://[redacted]@localhost:3306/[redacted]
--  Liquibase version: 4.2.2
--  *********************************************************************

--  Lock Database
UPDATE `[redacted]`.DATABASECHANGELOGLOCK SET `LOCKED` = 1, LOCKEDBY = '[redacted]', LOCKGRANTED = '2021-01-12 16:36:46.435' WHERE ID = 1 AND `LOCKED` = 0;

--  Release Database Lock
UPDATE `[redacted]`.DATABASECHANGELOGLOCK SET `LOCKED` = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

如果我重新创建一个空数据库并通过CLI运行更新,然后尝试相同的回滚命令,我将获得完整的回滚SQL:

代码语言:javascript
复制
--  *********************************************************************
--  Rollback to '0.0.1' Script
--  *********************************************************************
--  Change Log: changelog.xml
--  Ran at: 1/12/21 4:40 PM
--  Against: user@[redacted]@jdbc:mysql://[redacted]@localhost:3306/[redacted]
--  Liquibase version: 4.2.2
--  *********************************************************************

--  Lock Database
UPDATE `[redacted]`.DATABASECHANGELOGLOCK SET `LOCKED` = 1, LOCKEDBY = '[redacted]', LOCKGRANTED = '2021-01-12 16:40:20.982' WHERE ID = 1 AND `LOCKED` = 0;

--  Rolling Back ChangeSet: changelog.xml::40::ez
DELETE FROM `[redacted]`.DATABASECHANGELOG WHERE ID = '40' AND AUTHOR = 'ez' AND FILENAME = 'changelog.xml';

--  Rolling Back ChangeSet: changelog.xml::30::ez
DROP TABLE `[redacted]`.AnotherTable;

DELETE FROM `[redacted]`.DATABASECHANGELOG WHERE ID = '30' AND AUTHOR = 'ez' AND FILENAME = 'changelog.xml';

--  Rolling Back ChangeSet: changelog.xml::20::ez
DELETE FROM `[redacted]`.DATABASECHANGELOG WHERE ID = '20' AND AUTHOR = 'ez' AND FILENAME = 'changelog.xml';

--  Release Database Lock
UPDATE `[redacted]`.DATABASECHANGELOGLOCK SET `LOCKED` = 0, LOCKEDBY = NULL, LOCKGRANTED = NULL WHERE ID = 1;

怎么回事?如何通过命令行工具回滚应用生成的changeSets?

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 22:57:08

Liquibase rollback from command line not working的副本

当我从我的应用程序运行它时,DATABASECHANGELOG中的文件名是db/liquibase/changelog.xml。通过命令行界面,我必须在此路径C:\Projects\[redacted]\src\main\resources下运行它,并且在我的liquibase.properties中使用此路径,而不是changeLogFile=db/liquibase/changelog.xml

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65692544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档