2012-02-23 118 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');