使用 Liquibase 将数据库从一个版本迁移到另一个版本

Database Migration from one version to another using Liquibase

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

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

例如:我的 App table 有一个名为 version 的列,现在我有另一个名为 releaseVersion 的列,我必须应用 alter 来添加这个 column.In 这种情况,如何使用 liquibase 到 generate/apply migration 脚本?

liquibase能做到这样migration吗?

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

创建了 table
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,但它只能从两个数据库(target dbbase db)中创建差异 changelog。就我而言,只有一个生产数据库。

是的,有可能。

像这样创建一个变更集:

<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 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>