2

アプリケーションのプロパティ

TM_ESCALATION_QUALIFICATION=SHIFT_LEADER

アプリケーション.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)....
4

1 に答える 1

3

ウェブから、提案は使用することです

flyway.placeholderReplacement=false

> flyway 4.0.3にアップグレードした後にのみ機能しました(最新のSpring Bootはoooldバージョンを使用しています)

うまくいったもう1つのことは、偽のプレースホルダープレフィックスを使用することであり、それでうまくいきました...

flyway.placeholderPrefix=$$$-偽物-$$$

于 2017-02-21T13:23:17.483 に答える