¿Cómo deshabilitar flyway en un perfil de Spring en particular?

4 minutos de lectura

avatar de usuario de gstackoverflow
desbordamiento de gstack

Ahora tengo una aplicación Spring-Boot que usa el servidor MsSQL. Y usamos la ruta migratoria para las migraciones.

Quiero agregar un perfil adicional para las pruebas. Quiero generar tablas a partir de clases de entidad en lugar de usar flyway.

Intenté algo para escribir así en application.yaml

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

pero la ruta migratoria comienza de todos modos

Avatar de usuario de Todd
Todd

FYI, para cualquiera que venga aquí en busca de esto, el nombre de la propiedad ha cambiado para Spring Boot 2.0:

Para application.properties formato:

spring.flyway.enabled=false

Para application.yml formato:

spring:
    flyway:
        enabled: false

Actualizar: Para deshabilitar flyway en un perfil específico, puede colocar esa propiedad en el archivo de propiedades específico de ese perfil. Por ejemplo, si su perfil se llama “abc”, puede ponerlo en application-abc.properties. Verificar Documentación de Spring sobre propiedades específicas del perfil para obtener más claridad sobre cómo nombrar los archivos. En general, el formato es application-{profileName}.properties.

  • esto no pasa bajo la primavera. ruta migratoria: habilitado: falso

    – Tushar J. Dudhatra

    2 de mayo de 2018 a las 12:14


  • Lo siento, no sigo tu comentario.

    – Todd

    2 de mayo de 2018 a las 12:15

  • @gstackoverflow Ver actualización, agregué algunos comentarios y un enlace sobre cómo aplicar propiedades a perfiles específicos.

    – Todd

    9 de noviembre de 2018 a las 13:41

  • Me alegro de que haya ayudado @gstackoverflow

    – Todd

    9 de noviembre de 2018 a las 17:21

  • alternativamente, lo siguiente es perfectamente válido en application.yml: spring.flyway.enabled: false. Si no funciona, intente poner ‘falso’ entre comillas…

    – maestroxilo

    23 de julio de 2019 a las 10:23

Avatar de usuario de Stanislav
Stanislav

¡No sirve para Spring Boot 2.X! La respuesta correcta está aquí.

Continúe leyendo si necesita una respuesta para Spring Boot 1.X.

Hay una propiedad disponible para spring-boot para deshabilitar el flyway si es necesario flyway.enabled que es cierto por defecto.

Puede tener una configuración específica de perfil, en su caso debería nombrarse como application-test.yml. Esta configuración puede deshabilitar flyway si el perfil está activo. Solo tienes que declararlo de la siguiente manera:

flyway:
  enabled: false

Y si especifica el perfil de prueba en la configuración común, simplemente agréguelo a su raíz.

  • Si solo necesita la ruta migratoria para no jurar que algunas migraciones no se aplican, puede usar spring.flyway.out-of-order = true

    – roma2341

    8 de julio de 2021 a las 11:28

Avatar de usuario de Jonathan JOhx
jonathan jox

JIC la documentación oficial con Spring Boot 2.x actual:
Propiedades de migración de datos y echa un vistazo a la etiqueta # VÍA AÉREA encontrarás muchas propiedades que te pueden ayudar.

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

Tengo varios perfiles, por ejemplo.

  1. aplicación-integración.yml
  2. aplicación.yml

en aplicación.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

en aplicación-integración.yml

spring:
  flyway:
    enabled: false

cuando lo ejecuto, no deshabilita la migración de la ruta migratoria. Estoy usando SpringBoot2.3.4

Aquí ejemplo de application.yaml Define 2 perfiles:
1. enable_flyway_profile – permite la ruta migratoria
2. disable_flyway_profile – desactiva la ruta migratoria

spring:
  profiles:
    active: "enable_flyway_profile"
  flyway:
    enable: true
  ....

---

spring:
  profiles:
    active: "disable_flyway_profile"
  flyway:
    enable: false
  ....

  • no precisamente. docs.spring.io/spring-boot/docs/current/reference/html/… lo que buscas es spring.profiles: "enable_flyway_profile" el active propiedad es definir qué perfil está activo

    – TecHunter

    18 de febrero de 2019 a las 15:31

  • @TecHunter, puede ser una sorpresa para usted, pero ese código funciona en producción con éxito

    – desbordamiento de gstack

    18 de marzo de 2019 a las 9:52

  • oh bueno, es bueno saberlo! prefiero la forma en que lo escribiste también 🙂 más explícito

    – TecHunter

    18 de marzo de 2019 a las 18:45

  • no precisamente. docs.spring.io/spring-boot/docs/current/reference/html/… lo que buscas es spring.profiles: "enable_flyway_profile" el active propiedad es definir qué perfil está activo

    – TecHunter

    18 de febrero de 2019 a las 15:31

  • @TecHunter, puede ser una sorpresa para usted, pero ese código funciona en producción con éxito

    – desbordamiento de gstack

    18 de marzo de 2019 a las 9:52

  • oh bueno, es bueno saberlo! prefiero la forma en que lo escribiste también 🙂 más explícito

    – TecHunter

    18 de marzo de 2019 a las 18:45

¿Ha sido útil esta solución?