1

我推出了应用程序的第一个版本,并为此设置了 Postgres 服务器。

我计划推出我的应用程序的第二个版本,它在我的表中进行了结构更改。

例如:我有一个名为 version 的列的 App 表,现在我有另一个名为 releaseVersion 的列,我必须申请alter添加此列。在这种情况下,我该如何liquibase生成/应用migration脚本?

liquibase能力这样migration吗?

简而言之,对于我的第一个版本,我使用 DDL 创建了我的表

CREATE TABLE App (version varchar); // I manually generated this using liquibase offline mode and my metadata.

现在我有我的数据库和上面的列。

我需要使用liquibase. 像这样的东西

ALTER TABLE App ADD releaseVersion varchar;

是否可以使用Liquibase,因为它是migration.

我用过liquibase:diff,但它只能changelog从两个数据库(target dbbase db)中创建差异。就我而言,只有一个生产数据库。

4

1 回答 1

1

是的,这是可能的。

创建一个变更集,如:

<changeSet author="foo" id="bar">
    <preConditions onFail="MARK_RAN">
        <and>
            <columnExists tableName="App" columnName="version"/>
            <not>
                <columnExists tableName="App" columnName="releaseVersion"/>
            </not>
        </and>
    </preConditions>
    <renameColumn tableName="App" oldColumnName="version" newColumnName="releaseVersion" columnDataType="varchar(100)"/>
</changeSet>

并使用liquibase update命令应用它。

如果您只需要添加一个新列,那么您的 changeSet 将如下所示:

<changeSet id="foo" author="bar">
    <preConditions onFail="MARK_RAN">
        <not>
            <columnExists tableName="App" columnName="releaseVersion"/>
        </not>
    </preConditions>
    <addColumn tableName="App">
        <column name="releaseVersion" type="varchar(100)"/>
    </addColumn>
</changeSet>
于 2019-07-18T14:25:29.520 回答