2012-02-23 120 views
5

我正在評估Flyway以供我的項目使用。我們目前的SQL腳本包含像URL這樣的東西的佔位符,根據環境(dev,qa,prod)將有不同的域名。佔位符如何在Flyway中工作?

具體來說,我們可能有INSERT語句像

INSERT INTO FEED VALUES ('app.${env.token}.company.org/feed1', 'My Feed'); 

$ {} env.token需要與 '開發', '質量保證' 或 '刺' 來代替。

我們有大約50個不同的屬性,可能需要替換SQL腳本。屬性全部駐留在一個或兩個屬性文件中。

有沒有辦法運行Flyway Ant遷移任務,以便它從屬性文件中提取替換標記和值?螞蟻過濾器任務沿線的東西?

回答

9

當前,當提供佔位符作爲屬性時,屬性名稱的前綴應爲flyway.placeholders。

例如,$ {} env.token佔位可以直接指定爲這個Ant屬性:flyway.placeholders.env.token

目前用於直接傳遞屬性文件不支持,而不使用屬性名稱的前綴。請隨時在Issue Tracker中提出問題。 :-)

+1

Axel,你可以在這裏添加這個解釋到文檔:https://flywaydb.org/documentation/migration/sql在閱讀這裏之前,我無法理解佔位符的正確使用。 – csonuryilmaz 2017-04-07 12:23:28

1

如果令牌是subdomain

INSERT INTO FEED VALUES ('app.${subdomain}.company.org/feed1', 'My Feed'); 

在flyway.conf值:

flyway.url=jdbc:mydb://db 
flyway.user=root 
flyway.schemas=schema1 
flyway.placeholders.subdomain=example 

或命令行:

flyway -url=jdbc:mydb://db -user=root -schemas=schema1 -placeholders.subdomain=example migrate 

將運行腳本:

INSERT INTO FEED VALUES ('app.example.company.org/feed1', 'My Feed');