Liquibase回滚总是回滚到一个干净的空数据库



我一直在努力学习Liquibase,现在,并试图执行一个简单的回滚。但当它执行时,它总是回滚到一个新的数据库,即使我只是试图回滚到一个特定的标签。我的命令行在…

java -jar liquidbase .jar——changeLogFile=/media/GALACTUS/Documents/CHANGELOGS/CH_Q_10.xml rollback "1.0.0-RELEASE"

我使用的更改日志也粘贴在下面。我希望这最终会进入1.0.0版本的数据库,但它只是完全回滚了整个事情。我已经确认版本标签在更改日志中,所以我不确定我错过了什么。

<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd
        http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">

    <changeSet id="1" author="root">
        <preConditions onFail="MARK_RAN">
            <tableExists tableName="student" schemaName="public"/>
        </preConditions>
        <createTable tableName="student">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="enrolled" type="boolean" defaultValueBoolean="false"/>
        </createTable>
    </changeSet>
    <changeSet id="2" author="root">
        <preConditions onFail="MARK_RAN">
            <columnExists tableName="student" columnName="grade" schemaName="public"/>
        </preConditions>
        <addColumn tableName="student">
            <column name="grade" type="DECIMAL(4,2)" />
        </addColumn>
    </changeSet>
    <changeSet id="3" author="root">
        <preConditions onFail="MARK_RAN">
            <columnExists tableName="student" columnName="enrolled" schemaName="public"/>
        </preConditions>
        <dropColumn 
            columnName="enrolled"
            tableName="student"/>
            <rollback>ALTER TABLE student ADD COLUMN enrolled boolean;</rollback>
    </changeSet>
    <changeSet id="4" author="root" >
        <tagDatabase tag="1.0.0-RELEASE"/>
    </changeSet>
    <changeSet id="5" author="root">
        <createTable tableName="instructor">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
            <column name="start_date" type="varchar(50)" />
        </createTable>
    </changeSet>
    <changeSet id="6" author="root" >
        <tagDatabase tag="1.1.0-RELEASE"/>
    </changeSet>
</databaseChangeLog>

下面是我的更改日志的一个镜头,显示了版本标签,但它从来没有回滚到那个标签,它只是继续回滚一切。

Changelog

任何想法或想法都非常感谢,从我读过的一切来看,这似乎应该是相当直接的,我有点困惑。

我猜Liquibase开始回滚并继续,直到找到指定的标签。我会检查是否有原因导致它没有看到匹配的标签,比如标签中的输入错误。我注意到在命令中,在"1.0.0-"one_answers"RELEASE"之间有一个空格,而这个空格不在更改日志的标签中。

相关内容

  • 没有找到相关文章

最新更新