【问题标题】:How to run Flyway commands in spring boot application?如何在 Spring Boot 应用程序中运行 Flyway 命令?
【发布时间】:2017-01-16 17:16:06
【问题描述】:

我一直在使用 flyway 来处理我的 sql 脚本迁移,对此我非常满意。但是,当我决定继续使用 spring boot 和 flyway 时,当我尝试从应用程序运行不同的 flyway 命令时,我卡住了。

当我运行我的 fat jar 应用程序时,migrate flyway 命令会自动执行。一切顺利,直到其中一个脚本在 linux 中失败(因为区分大小写)。所以,当我想执行repair 命令时,我没有办法,所以我不得不手动删除schema_version 表中的条目。

所以,我的问题是,是否甚至可以通过应用程序执行其他 flyway 命令,而无需创建自定义 flyway 处理程序并仅使用其本机集成。

我没有为 command 或类似的东西找到任何 Spring Boot 属性。

有什么帮助吗?

【问题讨论】:

  • 您可以随时使用flyway-maven-plugin
  • @AliDehghani 请记住,我指的是我们测试服务器中的 fat jar 应用程序,而不是源代码

标签: java spring spring-boot flyway


【解决方案1】:

Flyway 集成没有 command 属性。如果你愿意,你可以实现自己的FlywayMigrationStrategy,这是一个单一的方法接口:

public interface FlywayMigrationStrategy {

    /**
     * Trigger flyway migration.
     * @param flyway the flyway instance
     */
    void migrate(Flyway flyway);

}

您可以选择例如您传递的命令行参数并执行repair 而不是migrate

void migrate(Flyway flyway) {
    String command = env.getProperty("flyway.commamd", "migrate");
    switch (command) {
     case "migrate":
         flyway.migrate();
         break;
     case "repair":
         flyway.repair();
         break;
     default:
         throw new IllegalArgumentException("Invalid command: " + command);
 }
}

查看文档here

【讨论】:

    猜你喜欢
    • 2019-08-27
    • 2020-10-29
    • 2014-12-07
    • 1970-01-01
    • 2020-08-20
    • 2018-01-18
    • 2017-10-08
    • 2021-06-03
    • 2015-11-23
    相关资源
    最近更新 更多