【问题标题】:How to disable flyway in a certain spring profile?如何在某个弹簧配置文件中禁用飞路?
【发布时间】:2017-11-01 10:31:35
【问题描述】:

现在我有一个使用 MsSQL 服务器的 spring-boot 应用程序。我们使用 flyway 进行迁移。

我想为测试添加额外的配置文件。我想从实体类生成表,而不是使用 flyway。

我试着在 application.yaml 中这样写

spring:
  profiles: test
  jpa:
      generate-ddl: true
      hibernate:
  datasource:
    url: jdbc:h2:mem:test_db;MODE=MSSQLServer
    username: sa
    password:

但无论如何都会开始飞行

【问题讨论】:

    标签: java spring spring-boot flyway spring-profiles


    【解决方案1】:

    仅供参考,对于任何来这里寻找这个的人,the property name has changed for Spring Boot 2.0

    对于application.properties 格式:

    spring.flyway.enabled=false
    

    对于application.yml 格式:

    spring:
        flyway:
            enabled: false
    

    更新:要在特定配置文件中禁用 flyway,您可以将该属性放在特定于该配置文件的属性文件中。例如,如果您的个人资料名为“abc”,您可以将其放入application-abc.properties。查看Spring's documentation on Profile-specific properties 以更清楚地了解如何命名文件。一般格式为application-{profileName}.properties

    【讨论】:

    • 这不是春天。 flyway:启用:false
    • 对不起,我不关注你的评论。
    • @gstackoverflow 查看更新,我添加了一些关于如何将属性应用于特定配置文件的评论和链接。
    • 很高兴它帮助了@gstackoverflow
    • 或者,以下在application.yml 中完全有效:spring.flyway.enabled: false。如果它不起作用,请尝试将 'false' 放在引号中...
    【解决方案2】:

    不适用于 Spring Boot 2.X !正确答案是 here

    如果您需要 Spring Boot 1.X 的答案,请继续阅读。

    如果需要,spring-boot 有一个属性可以禁用 flyway flyway.enabled,默认情况下为 true。

    你可以有一个配置文件特定的配置,在你的情况下它应该被命名为application-test.yml。如果配置文件处于活动状态,此配置可以禁用 flyway。您只需声明如下:

    flyway:
      enabled: false
    

    如果您在通用配置中指定测试配置文件,只需将其添加到它的根目录。

    【讨论】:

    • 如果只需要flyway不发誓不应用某些迁移,可以使用spring.flyway.out-of-order = true
    【解决方案3】:

    JIC 带有当前 spring boot 2.x 的官方文档: Data migration properties 并查看标签 # FLYWAY,您会发现许多可以帮助您的属性。

    spring.flyway.enabled=false # Whether to enable flyway.
    

    【讨论】:

      【解决方案4】:

      这里是application.yaml 的示例,它定义了 2 个配置文件:
      1. enable_flyway_profile - 启用飞路
      2. disable_flyway_profile - 禁用飞路

      spring:
        profiles:
          active: "enable_flyway_profile"
        flyway:
          enable: true
        ....
      
      ---
      
      spring:
        profiles:
          active: "disable_flyway_profile"
        flyway:
          enable: false
        ....
      

      【讨论】:

      • 并非如此。 docs.spring.io/spring-boot/docs/current/reference/html/… 你要找的是spring.profiles: "enable_flyway_profile" active 属性是定义哪个配置文件是活动的
      • @TecHunter 可能会让您感到惊讶,但该代码在生产中成功运行
      • 哦,好的,很高兴知道!我也更喜欢你写的方式:)更明确
      【解决方案5】:

      我有多个个人资料,例如

      1. 应用程序集成.yml
      2. application.yml

      在 application.yml 中

      spring:
        profiles:
          active: ${ENVIRONMENT_NAME:local}
        flyway:
          enabled: true
          user: ${ORACLE_DB_USER:#{null}}
          password: ${ORACLE_DB_PASS:#{null}}
          locations: classpath:db/migration
          url: ${DB_URL:#{null}}
          driver-class-name: oracle.jdbc.OracleDriver
          #    skipExecutingMigrations: true
          tablespace: MY_TABLESPACE_NAME
          baselineOnMigrate: true
          schemas: MY_SCHEMA_NAME
      

      在 application-integration.yml 中

      spring:
        flyway:
          enabled: false
      

      当我运行它时,它不会禁用飞行路径迁移。我正在使用 SpringBoot2.3.4

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-27
        • 1970-01-01
        • 1970-01-01
        • 2017-12-02
        • 2014-10-14
        相关资源
        最近更新 更多