【问题标题】:How to skip a specific migration with flyway?如何使用 flyway 跳过特定的迁移?
【发布时间】:2015-05-14 17:49:41
【问题描述】:

我正在使用带有 gradle 的 flyway,我已经在数据库控制台中手动运行了其中一个迁移,我想运行 flyway,但告诉它忽略所有其他迁移版本之间的一个特定迁移版本。这可以做到吗?

【问题讨论】:

    标签: flyway


    【解决方案1】:

    你必须稍微修改一下才能让它工作,所以我不推荐这种方法,但它会在紧要关头工作。

    我只用 Maven 测试过这个,但我很确定它也适用于 Gradle。

    1. 迁移到您手动应用的版本之前的版本

      # Assuming you applied 01.002 manually
      $ mvn flyway:migrate -Dflyway.target=01.001
      
    2. 为您应用的脚本插入一行

      -- Make sure these vals closely replicate those from other rows
      insert into schema_version( installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) 
      values ( 2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true );
      
    3. 修复schema_version校验和

      $ mvn flyway:repair
      
    4. 应用其他迁移

      $ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true
      

    那里的两个-D 属性可能不需要,这取决于您是否得到insert 正确与否。 Flyway 可能不同意您的脚本描述,例如,即使校验和现在是正确的。

    【讨论】:

    • 有时不需要插入精心设计的insert(例如,如果您的升级脚本在添加现有列或删除已删除的表时失败)。只需通过设置success = 1 允许 Flyway 失败并修复最新线路。您可以在更新脚本的开头使用垃圾进行安全失败(防止进一步可能的危险操作)。只需在flyway:repair 之前清除垃圾
    【解决方案2】:

    不推荐但如果你仍然想:

    1) 运行flywayMigrate,让迁移失败。
    2) 手动更新该特定版本迁移的 flyway 元表(成功列)。
    3) 再次运行 flywayMigrate。
    4) 完成,flyway 现在将开始下一个版本的迁移。

    【讨论】:

    • 像魅力一样工作。谢谢!
    【解决方案3】:

    从版本 7 开始,您可以将其直接添加到您的 Maven 或 Grade 文件中

    Gradle - 跳过

    flyway {
         skipExecutingMigrations = true
    }
    

    Maven - 跳过

    <configuration>
         <skipExecutingMigrations>true</skipExecutingMigrations>
    </configuration>
    

    Documentation Reference Skip

    Gradle - 樱桃采摘

    flyway {
         cherryPick = '2.0'
    }
    

    Maven - 樱桃采摘

    <configuration>
         <cherryPick>2.0</cherryPick>
    </configuration>
    

    Documentation Reference Cherry Pick

    【讨论】:

    • 请注意,参数“skipExecutingMigrations”是 Teams 版本的功能。这意味着您必须付费才能使用此功能。
    猜你喜欢
    • 2013-07-23
    • 2015-12-10
    • 2015-06-18
    • 2017-06-24
    • 2013-03-27
    • 2015-04-25
    • 2011-06-24
    • 2019-05-04
    • 1970-01-01
    相关资源
    最近更新 更多