Flyway 基线功能有什么用?
What is Flyway baseline feature good for?
尽管阅读了 Flyway 网站上所有可用的文档,但我仍然不明白基线有什么用。有人可以用通俗易懂的英语解释一下并提及此命令的一些用例吗?
例如,在版本 V1_0__baseline.sql 上建立数据库基线,指示 Flyway 仅应用在 V1_0 之后创建的迁移脚本。它通过在 Flyway 使用的 SCHEMA_VERSION table 中插入一个迁移条目来实现。当您 运行 迁移时,只有当可用的迁移脚本的版本高于基线版本时,才会应用可用的迁移脚本。
例子
您希望在生产和开发数据库上使用 Flyway。您创建了一个仅模式的生产转储。这将是您使用 Flyway 创建新的空数据库时应用的第一个迁移脚本。
但是,由于您现有的生产和开发机器已经在这个版本上,所以您不想应用这个初始脚本。为防止这种情况,您创建一个 SCHEMA_VERSION table 并将“1_0”插入 table 以指示 Flyway 数据库已位于 1_0。您可以 运行 Flyway 基线命令,而不是手动创建此 table 并通过 SQL 插入一行。
然后,几周后,还有另一个数据库,您尚未将其引入 Flyway,但仍在对其应用更新脚本(也许您没有时间)。当您将此数据库带入 Flyway 时,您可能需要将其设置为 V3_0 或其他版本的基线。
尽管阅读了 Flyway 网站上所有可用的文档,但我仍然不明白基线有什么用。有人可以用通俗易懂的英语解释一下并提及此命令的一些用例吗?
例如,在版本 V1_0__baseline.sql 上建立数据库基线,指示 Flyway 仅应用在 V1_0 之后创建的迁移脚本。它通过在 Flyway 使用的 SCHEMA_VERSION table 中插入一个迁移条目来实现。当您 运行 迁移时,只有当可用的迁移脚本的版本高于基线版本时,才会应用可用的迁移脚本。
例子
您希望在生产和开发数据库上使用 Flyway。您创建了一个仅模式的生产转储。这将是您使用 Flyway 创建新的空数据库时应用的第一个迁移脚本。
但是,由于您现有的生产和开发机器已经在这个版本上,所以您不想应用这个初始脚本。为防止这种情况,您创建一个 SCHEMA_VERSION table 并将“1_0”插入 table 以指示 Flyway 数据库已位于 1_0。您可以 运行 Flyway 基线命令,而不是手动创建此 table 并通过 SQL 插入一行。
然后,几周后,还有另一个数据库,您尚未将其引入 Flyway,但仍在对其应用更新脚本(也许您没有时间)。当您将此数据库带入 Flyway 时,您可能需要将其设置为 V3_0 或其他版本的基线。