如何在某个 spring 配置文件中禁用 flyway?
How to disable flyway in a certain spring profile?
现在我有一个 spring-boot 应用程序,它使用 MsSQL 服务器。我们使用 flyway 进行迁移。
我想为测试添加一个额外的配置文件。我想从实体 类 而不是使用 flyway 生成表。
我试着在 application.yaml
中这样写
spring:
profiles: test
jpa:
generate-ddl: true
hibernate:
datasource:
url: jdbc:h2:mem:test_db;MODE=MSSQLServer
username: sa
password:
但飞行路线无论如何都会开始
不用于 Spring 启动 2.X ! 正确答案是 .
如果您需要 Spring 启动 1.X 的答案,请继续阅读。
有一个 属性 可用于 spring-boot 以在需要时禁用 flyway flyway.enabled
默认情况下为真。
你可以有一个配置文件特定的配置,在你的情况下它应该被命名为 application-test.yml
。如果配置文件处于活动状态,此配置可以禁用 flyway。您只需按如下方式声明它:
flyway:
enabled: false
如果您在通用配置中指定测试配置文件,只需将其添加到它的根目录即可。
仅供参考,对于任何来这里寻找这个的人,the property name has changed for Spring Boot 2.0:
对于application.properties
格式:
spring.flyway.enabled=false
对于application.yml
格式:
spring:
flyway:
enabled: false
更新: 要在特定配置文件中禁用飞路,您可以将 属性 放入特定于该配置文件的属性文件中。例如,如果您的配置文件名为 "abc",您可以将其放在 application-abc.properties
中。查看 Spring's documentation on Profile-specific properties 以更清楚地了解如何命名文件。一般格式为application-{profileName}.properties
。
JIC 当前 spring 引导 2.x 的官方文档:
Data migration properties 并查看标签 # FLYWAY,您会发现许多可以帮助您的属性。
spring.flyway.enabled=false # Whether to enable flyway.
这里是 application.yaml
的示例,它定义了 2 个配置文件:
1. enable_flyway_profile
- 启用 flyway
2. disable_flyway_profile
- 禁用飞路
spring:
profiles:
active: "enable_flyway_profile"
flyway:
enable: true
....
---
spring:
profiles:
active: "disable_flyway_profile"
flyway:
enable: false
....
我有多个配置文件,例如
- 应用-integration.yml
- 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
申请中-integration.yml
spring:
flyway:
enabled: false
当我 运行 它时,它不会禁用 flyway 迁移。我正在使用 SpringBoot2.3.4
现在我有一个 spring-boot 应用程序,它使用 MsSQL 服务器。我们使用 flyway 进行迁移。
我想为测试添加一个额外的配置文件。我想从实体 类 而不是使用 flyway 生成表。
我试着在 application.yaml
中这样写spring:
profiles: test
jpa:
generate-ddl: true
hibernate:
datasource:
url: jdbc:h2:mem:test_db;MODE=MSSQLServer
username: sa
password:
但飞行路线无论如何都会开始
不用于 Spring 启动 2.X ! 正确答案是
如果您需要 Spring 启动 1.X 的答案,请继续阅读。
有一个 属性 可用于 spring-boot 以在需要时禁用 flyway flyway.enabled
默认情况下为真。
你可以有一个配置文件特定的配置,在你的情况下它应该被命名为 application-test.yml
。如果配置文件处于活动状态,此配置可以禁用 flyway。您只需按如下方式声明它:
flyway:
enabled: false
如果您在通用配置中指定测试配置文件,只需将其添加到它的根目录即可。
仅供参考,对于任何来这里寻找这个的人,the property name has changed for Spring Boot 2.0:
对于application.properties
格式:
spring.flyway.enabled=false
对于application.yml
格式:
spring:
flyway:
enabled: false
更新: 要在特定配置文件中禁用飞路,您可以将 属性 放入特定于该配置文件的属性文件中。例如,如果您的配置文件名为 "abc",您可以将其放在 application-abc.properties
中。查看 Spring's documentation on Profile-specific properties 以更清楚地了解如何命名文件。一般格式为application-{profileName}.properties
。
JIC 当前 spring 引导 2.x 的官方文档: Data migration properties 并查看标签 # FLYWAY,您会发现许多可以帮助您的属性。
spring.flyway.enabled=false # Whether to enable flyway.
这里是 application.yaml
的示例,它定义了 2 个配置文件:
1. enable_flyway_profile
- 启用 flyway
2. disable_flyway_profile
- 禁用飞路
spring:
profiles:
active: "enable_flyway_profile"
flyway:
enable: true
....
---
spring:
profiles:
active: "disable_flyway_profile"
flyway:
enable: false
....
我有多个配置文件,例如
- 应用-integration.yml
- 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
申请中-integration.yml
spring:
flyway:
enabled: false
当我 运行 它时,它不会禁用 flyway 迁移。我正在使用 SpringBoot2.3.4