我一直在努力学习Liquibase,现在尝试进行简单的回滚。但是当它执行时,它总是回滚到一个新的数据库,即使我只是尝试回滚到特定的标签。我的命令行在......
之下java -jar liquibase.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>
下面是我的更改日志的镜头,显示了版本标记,但它从不回滚到该标记,它只是继续回滚所有内容。
我非常感谢任何想法或想法,从我所读过的所有内容看来,这应该是相当直接的,我有点困惑。
答案 0 :(得分:0)
我猜想Liquibase开始回滚并继续直到找到指定的标签。因此,我将检查是否有没有看到匹配标签的原因,例如标签中的键入错误。我注意到命令中在“ 1.0.0-”和“ RELEASE”之间有一个空格,并且该空格不在更改日志的标签中。