使用 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 db
和 base 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>
我推出了第一个版本的应用程序,并为此设置了一个 Postgres 服务器。
我正计划推出我的应用程序的第二个版本,它在我的 table 中进行了结构更改。
例如:我的 App table 有一个名为 version 的列,现在我有另一个名为 releaseVersion 的列,我必须应用 alter
来添加这个 column.In 这种情况,如何使用 liquibase
到 generate/apply migration
脚本?
liquibase
能做到这样migration
吗?
简而言之,对于我的第一个版本,我使用 DDL
创建了 tableCREATE 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 db
和 base 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>