首页 > 解决方案 > 在具有现有表的数据库上运行 flyway 迁移

问题描述

我正在使用现有表的 postgres 数据库上运行 flyway 迁移。这样做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_MIGRATETRUE仅一次,并且在创建模式历史表时我们可以将其转回FALSE?还是我们必须坚持TRUE价值?

标签: flyway

解决方案


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

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

本文使用的是 SQL Server 数据库而不是 Postgres,但可能会很好地了解 flyway 基线的工作原理:https ://www.red-gate.com/hub/product-learning/flyway/flyway-baselines-and-consolidations .


推荐阅读