以下I已经创建上 liquibase 中的快速启动变更集(非常哑:))

代码:

<?xml version="1.0" encoding="UTF-8"?>

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

    <changeSet id="1" author="me">
        <createTable tableName="first_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(50)">
                <constraints nullable="false"/>
            </column>
        </createTable>
        <createTable tableName="new_table">
            <column name="id" type="int">
                <constraints primaryKey="true" nullable="false"/>
            </column>
        </createTable>
    </changeSet>

</databaseChangeLog>

我已经创建了一个清洁模式和我已经推出了迁移命令。

Liquibase创建的数据库,与所述支撑台databasechangelog和..lock。

现在我如何能跟踪改变??我已经修改了变更添加新的元素CREATETABLE但当我试着命令“更新” liquibase告诉我这

Migration Failed: Validation Failed:
     1 change sets check sum

,所以我不认为已经理解与liquibase的工作方式。

有人可能指向我向右方向ΔΣ

由于

有帮助吗?

解决方案

您永远不应该修改已经执行的<changeSet>。 Liquibase计算日志中的所有执行变更,并将它们存储校验和。然后,它会重新计算校验和,将其比作那些存储和故障运行它,如果校验和不同的下一次。

您需要做的,而不是什么是添加的其他 <changeSet>,并把你的新CREATETABLE元素在里面。

快速入门是很好的阅读下载,但它确实是快:-)看看完整的手动,特别是其变更部分。

其他提示

此目前接受的答案是略显过时基于在Liquibase 2.x的变化在2.x版,如果MD5校验已经改变了变更Liquibase仍然会失败,但如果你希望能够修改它,你可以指定的 runOnChange 属性。

文档

  

<强> runOnChange - 执行改变所述第一时间可以看出,每次变更集已经改变

如果这是一个变化,基本上已经做了变更,您可以手动修改数据库,以便其为变更MD5匹配的新的。适合微小文字改动。或者,您可以从表中删除该行变更

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top