运行 在具有现有表的数据库上进行 flyway 迁移

Running flyway migration on a DB with existing tables

我在现有 table 的 postgres 数据库上进行 运行 飞路迁移。这样做 flyway 抛出了这个错误

Found non-empty schema(s) "public" but no schema history table. Use baseline() or set baselineOnMigrate to true to initialize the schema history table.

阅读 baselineOnMigrate 上的文档后,我们需要做的就是将其切换到 true,我们应该能够完成迁移。

需要明确启用此功能: 我们是否只将 FLYWAY_BASELINE_ON_MIGRATE 设置为 TRUE 一次,并且在创建架构历史记录 table 时我们可以将其恢复为 FALSE?还是我们必须保留 TRUE 值?

是的,您只设置了一次。这种方法实际上仅用于 Flyway 从配置文件中获取其所有参数的情况……它仅用于单一用途(例如,仅用于数据库的一个特定副本,而不是多个副本)。通常,您从命令行的操作开始,如下所示:

Flyway baseline  @FlywayArgs -baselineVersion='1.3.1' -baselineDescription='Existing version of MyDatabase'

本文使用的是 SQL 服务器数据库而不是 Postgres,但可能会很好地说明飞行路线基线的工作原理:https://www.red-gate.com/hub/product-learning/flyway/flyway-baselines-and-consolidations