使用 liquibase/flyway 类似 Terraform 的自动更新数据库,可能吗?

Posted

技术标签:

【中文标题】使用 liquibase/flyway 类似 Terraform 的自动更新数据库,可能吗?【英文标题】:Terraform-like auto-update db with liquibase/flyway, possible? 【发布时间】:2018-10-14 03:23:56 【问题描述】:

我们仍处于项目的早期阶段,我们正在构建一个包含多个表的数据库。 列出的两个工具都允许我们创建一些 DDL/DML 文件并跟踪对 db.xml 的更改。 无论如何,当结构仍未巩固时,这可能会很麻烦。

假设我想添加一个新列,甚至删除一个表:在这两个程序中,我必须使用 ALTER TABLE/etc 创建一个新脚本。命令并记录更改。

在 terraform 中,您只需编写所需的基础架构,当您通过删除节点更改文件时,该工具只会更新已经存在的内容。

是否可以仅列出文件中的表,例如,当我删除表定义时,该工具仅更新现有架构? 如果有人使用其他工具更改架构,则同理。

【问题讨论】:

【参考方案1】:

只要您不介意丢失数据(从您的问题看来这可能是可以的),Flyway 就有 cleanOnValidationError 标志。

通过这种方式,您可以使用一个(或多个)SQL 文件,并且一旦您运行 migrate 并且之前运行的文件已更改,Flyway 将报告一个验证错误,这反过来会在 Flyway 立即设置之前清除架构根据最新的定义再次全部恢复。

它们对于开发中的快速迭代非常有用。

【讨论】:

以上是关于使用 liquibase/flyway 类似 Terraform 的自动更新数据库,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

MPLS TE概念梳理

特征降维 理论

自定义 NavigationView 顶栏

Card.io 不符合协议 CardIOPaymentViewControllerDelegate

如何使用 ExtJS 销毁对象的所有实例?

用类模板实现容器存储自定义数据类型(类似于STL里面的vector)