我一直在尝试学习Liquibase,现在尝试执行一个简单的回滚。但是当它执行时,它总是回滚到一个新的数据库,即使我只是试图回滚到一个特定的标记。我的命令行在下面...
java-jar liquiBase.jar--changelogfile=/media/galactus/documents/changelogs/ch_q_10.xml回滚“1.0.0-release”
我正在使用的更改日志也粘贴在下面。我希望这最终会转到1.0.0版本的数据库中,但它只是完全回滚了整个过程。我已经确认version标记在changelog中,所以我不确定我遗漏了什么。
<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>
我猜Liquibase开始回滚并继续,直到找到指定的标签。因此,我会检查是否有原因导致它看不到匹配的标签,比如标签中的键入错误。我注意到在命令中,在“1.0.0-”和“release”之间有一个空格,而这个空格不在Changelog的标签中。
case-0-3.sql: 我在进行任何更改之前标记数据库: 之后,我在每个文件应用后应用文件和标记数据库: 求求你,救命。可能有人在sql或其他格式中使用回滚操作?哪里错了?我做错了什么?它是工作液基功能吗?
我的问题是liquibase没有回滚我的一些变更集,这些变更集是在我试图回滚的变更集上设置标签后执行的。 例如,我创建了两个按正常方式执行的变更集(A和B)。然后,我创建了另一个变更集,它将变更集B的标记设置为Release1。并且这个变更集也按预期工作。但是,我随后执行另外5个变更集,所有变更集都使用回滚命令。而且这些也执行得很好。 现在,这个回滚不应该回滚在执行release1标记之后执行的任
我正在处理一个分支,例如需要删除表X中的一列,我添加了一个更改,它对该特定分支有好处,然后我切换到另一个分支,该分支仍然需要该列,并且该更改需要回滚。db在不同的分支之间有很多变化,比如这样的变化。 我为每个分支添加一个新的changelog xml,并将其包含在主changelog xml中。显然,当我切换到另一个分支时,前一个分支的changlog xml不再在工作区中,并且liquibase
case-0-3.sql: I在进行任何更改之前标记数据库: 之后,我应用文件,并在每个文件应用后标记数据库:
当出现多个矿工挖到同一个区块时,系统会选择累计算力最大的区块。出现这种情况时,有可能需要回滚已经处理过的区块,并处理新区块。 当前处理区块时,都会根据区块哈希,创建一个操作历史记录。当需要回滚区块时,将遍历这个历史记录,用旧的数据覆盖当前数据,并删除该历史记录。从而简单的实现区块的回滚。
我是一名实习生,我正在尝试学习Liquibase,看看我们是否可以将其用于我们的应用程序。我使用了Git Bash中的Liquibase,没有任何问题(在更新和回滚方面都很好),然后我尝试将Liquibase与Spring Boot项目一起使用,看看是否能够更新数据库。我做到了,我通过Spring Boot创建并更新了db。但接下来我想做一些回滚,但我不能,我不知道该做什么。我试着在Git Bas