运行 在具有现有表的数据库上进行 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。
我在现有 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。