使用 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 的自动更新数据库,可能吗?的主要内容,如果未能解决你的问题,请参考以下文章