占位符如何在Flyway中工作?
问题描述:
我正在评估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迁移任务,以便它从属性文件中提取替换标记和值?蚂蚁过滤器任务沿线的东西?
答
当前,当提供占位符作为属性时,属性名称的前缀应为flyway.placeholders。
例如,$ {} env.token占位可以直接指定为这个Ant属性:flyway.placeholders.env.token
目前用于直接传递属性文件不支持,而不使用属性名称的前缀。请随时在Issue Tracker中提出问题。 :-)
答
如果令牌是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');
Axel,你可以在这里添加这个解释到文档:https://flywaydb.org/documentation/migration/sql在阅读这里之前,我无法理解占位符的正确使用。 – csonuryilmaz 2017-04-07 12:23:28