我一直在努力学习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"之间有一个空格,而这个空格不在更改日志的标签中。