Flyway 基线功能有啥用? [关闭]

Posted

技术标签:

【中文标题】Flyway 基线功能有啥用? [关闭]【英文标题】:What is Flyway baseline feature good for? [closed]Flyway 基线功能有什么用? [关闭] 【发布时间】:2015-03-14 08:44:59 【问题描述】:

尽管阅读了 Flyway 网站上的所有可用文档,但我仍然不明白基线有什么用处。有人能用简单的英语解释一下,并提到这个命令的一些用例吗?

【问题讨论】:

如何在现实生活中使用基线示例:***.com/questions/33509131 和 ***.com/questions/53594218 【参考方案1】:

例如,为版本 V1_0__baseline.sql 的数据库设置基准,指示 Flyway 仅应用在 V1_0 之后创建的迁移脚本。它通过在 Flyway 使用的 SCHEMA_VERSION 表中插入一个迁移条目来实现这一点。当您运行迁移时,只有在其版本高于基准版本时才会应用可用的迁移脚本。

示例

您希望在生产和开发数据库上使用 Flyway。您创建一个仅用于生产的模式转储。这将是您使用 Flyway 创建新的空数据库时应用的第一个迁移脚本。

但是,由于您现有的生产和开发机器已经在此版本上,您不想应用此初始脚本。为了防止这种情况,您创建一个 SCHEMA_VERSION 表并将“1_0”插入到表中,以指示 Flyway 数据库已经位于 1_0。您可以运行 Flyway 基线命令,而不是手动创建此表并通过 SQL 插入行。

然后,几周后,您还没有将另一个数据库带到 Flyway,但仍在应用更新脚本(也许您没有时间)。当您将此数据库引入 Flyway 时,您可能需要将其作为 V3_0 或其他版本的基准。

【讨论】:

如果您的flyway.locations 中有V1_0__baseline.sql,您会从终端运行什么命令来为该版本的数据库设置基线? @Marco Lackovic:作为更高版本的基线,我使用命令行参数-baselineVersion=1.11 将其带到版本 1.11,而不是默认的 1。然后它将先前的迁移标记为“低于基线”。但是,在运行一次 migrate 后我无法做到这一点,它给了我一个“已经基线化”的错误。所以我删除了flyway_schema_history 表并运行了基线命令。也许有人可以在不删除 flyway_schema_history 表的情况下指定重新基线的正确方法。

以上是关于Flyway 基线功能有啥用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Flyway 和 Spring Boot 迁移基线

SpringBoot配置文件属性值

Flyway 模式仅仅是提供信息还是影响功能?

基线检查

flywaydb中的数据库基线版本是啥。我可以使用它从特定版本及更高版本进行迁移吗?

MongoDB 基线检查项