代码之家  ›  专栏  ›  技术社区  ›  Musa

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

  •  -1
  • Musa  · 技术社区  · 4 年前

    我正在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_MIGRATE TRUE 只有一次,并且在创建模式历史表时,我们可以将其返回到 FALSE ? 或者我们必须坚持 价值?

    0 回复  |  直到 4 年前
        1
  •  1
  •   tonyd    4 年前

    是的,你只设置了一次。这种方法实际上只在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 .