生产数据库中的 Flyway 集成
Posted
技术标签:
【中文标题】生产数据库中的 Flyway 集成【英文标题】:Flyway integration in a production database 【发布时间】:2012-09-16 04:19:49 【问题描述】:我们有一个生产中的数据库,它在“用户”表中已经有很多行。请考虑 flyway 网站上的以下声明:
如果您有一个尚未被 Flyway 填充的现有数据库 这是要走的路:
创建一个初始迁移脚本,它将重新创建您当前的 状态并给它一个低版本号。 使用 flyway:init 创建元数据表并将此脚本设置为当前版本。
我想使用 flyway 来管理我的架构和数据库中的各种常量,但我不希望 V1__Base_version.sql 包含我们当前生产用户的帐户信息,特别是考虑到它存储在 SCM 中。如果我正确理解了这些说明,我需要能够使用 V1__Base_version.sql “重新创建 [我的] 当前状态”。
那么仅使用架构和常量创建初始迁移是否可以正常工作?还是我们工作站上的数据库需要 100% 匹配生产中的数据库?
【问题讨论】:
如果我是正确的,我会在 24 小时内自己回答这个问题,但我认为只要我在生产数据库上进行 flyway init(假设架构和常量是正确的)我应该是很清楚。 【参考方案1】:你是对的。 init 命令用于用版本标记生产数据库。
您创建的初始迁移(使用您的 PROD 数据库的结构)适用于其他环境。它永远不会在 PROD 上运行,因为它的版本将低于 init 版本。但是,它将对齐所有环境,以便后续迁移可以平等地应用于所有环境。
【讨论】:
在较新的 flyway 版本中,基线命令 flywaydb.org/documentation/command/baseline 对吗?以上是关于生产数据库中的 Flyway 集成的主要内容,如果未能解决你的问题,请参考以下文章
Flyway 与 Spring Boot 的集成不会在嵌入式 H2 数据库上执行迁移脚本