java - Flyway如何在SQL文件内插入查询中使用占位符

标签 java spring-boot flyway property-placeholder

应用程序属性

TM_ESCALATION_QUALIFICATION=SHIFT_LEADER

Application.java

@Value( "${TM_ESCALATION_QUALIFICATION}" )
String escalationQualification;

@Bean
InitializingBean printConfigurations(DataSource datasource) {
    return () -> {
            Flyway flyway = new Flyway();
            flyway.setDataSource(datasource);
            flyway.getPlaceholders().put( "ESCALATION_QUALIFICATION", escalationQualification );    
            flyway.migrate();
    };
}

SQL 文件

insert into tm_qualification (ID, NAME, DELETABLE) values (sys_guid(), ${ESCALATION_QUALIFICATION}, 0); 

当我使用具有默认扩展名的文件时,上述内容有效,但当我将文件创建为 .sql 扩展名时,出现以下错误。

错误

org.flywaydb.core.api.FlywayException: No value provided for placeholder expressions: ${ESCALATION_QUALIFICATION}.  Check your configuration!
    at org.flywaydb.core.internal.util.PlaceholderReplacer.checkForUnmatchedPlaceholderExpression(PlaceholderReplacer.java:101)
    at org.flywaydb.core.internal.util.PlaceholderReplacer.replacePlaceholders(PlaceholderReplacer.java:78)
    at org.flywaydb.core.internal.dbsupport.SqlScript.<init>(SqlScript.java:79)....

最佳答案

来自网络,建议使用

flyway.placeholderReplacement=false

只有升级到 > Flyway 4.0.3 后才有效(Spring Boot 最新使用 ooold 版本)

另一件事是使用虚假的占位符前缀,这成功了......

flyway.placeholderPrefix=$$$-bogus-$$$

关于java - Flyway如何在SQL文件内插入查询中使用占位符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36323998/

相关文章:

应用程序启动时进行Python数据库迁移

java - org.flywaydb.core.api.FlywayException : Unable to instantiate JDBC driver when my java class is triggered from ant taskdef

java - 如何使 Maven 构建从常量中获取版本

java - 如何将扩展 AbstractMvcEndpoint 的执行器迁移到 Spring Boot 2.x?

spring-boot - 以下方法不存在 : 'org.springframework.plugin.core.PluginRegistry org.springframework.plugin.core.PluginRegistry.of(java.util.List)'

java - 如何在 Flyway 的不同文件中分隔每个脚本?

java - WFLYEJB0029 : Could not restore timer from . .. com.ctc.wstx.exc.WstxEOFException:序言中出现意外的 EOF

java - 发送图片到服务器

java - 如何读取属性文件?

java - Spring Boot 分页 - Mockito 存储库 findAll(Pageable) 返回 null