禁用Flyway占位符验证

时间:2014-11-11 15:21:56

标签: flyway

因此,在升级我的飞行版本之后我理解的是,flyway-core-2.2为Flyway占位符引入了一些验证。

现在,占位符语法的约定是大多数库中的$ {name}统一。在我们的迁移脚本中,我们在名为stretchySql的mysql表列中插入一个字符串,该字符串包含我们自己的一些占位符元素,这些元素应在运行时由应用程序层解释。

UPDATE `stretchy_parameter` SET `parameter_sql`='select r.id as report_id from stretchy_report r where r.report_category = \'${reportCategory}\'

我不希望flyway将字符串中嵌入的内容解释为自己的占位符并抛出错误。所以基本上,是否有某种方法可以关闭flyway占位符验证(因为我们不会使用它)而不会恢复到旧版本?

2 个答案:

答案 0 :(得分:4)

虽然您无法禁用它,但您可以将占位符前缀或后缀设置为永不匹配的内容。这将有效地实现同样的目标。

http://flywaydb.org/documentation/api/javadoc/org/flywaydb/core/Flyway.html#setPlaceholderPrefix(java.lang.String)

答案 1 :(得分:4)

从Flyway 3.2.1开始(不确定何时引入),有一个名为flyway.placeholderReplacement的新布尔设置,默认为true,您可以使用它来有效地禁用该功能。在API上,可以通过Flyway对象的setPlaceholderReplacement(value)isPlaceholderReplacement()方法访问它。

我知道2.2可能没有这个选项,并且接受的答案可能是解决问题的最佳方式,但我认为这个替代方案对于碰到此页面的新版本的用户可能会有用。