2016-03-31 43 views
2

Application.properties內遷飛如何插入查詢使用佔位符SQL文件

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).... 

回答

0

從網絡,建議是使用

flyway.placeholderReplacement =假

其中僅升級到>飛行用4.0.3(春季啓動最新工作後使用老版本)

工作的另一件事是使用僞造的佔位符前綴和臨時t訣竅...

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