【发布时间】:2020-12-14 00:51:27
【问题描述】:
我最近一直在尝试将 flyway 从 v4 升级到 v6.5.3。在此过程中,我遇到了与占位符有关的问题。
迁移失败并出现以下错误。
错误:无法解析语句 D:\Softwares\flyway-commandline-6.5.5-windows-x64\flyway-6.5.5\sql\V3__mysql-7.0.sql 在第 101 行第 1 列。见 https://flywaydb.org/documentation/knownparserlimitations 了解更多 信息:没有为占位符提供值:${')、NOW()、NOW())}。 检查你的配置!原因:没有提供价值 占位符:${')、NOW()、NOW())}。检查您的配置!
SQL,
insert into `configuration`(key, value, created_date , updated_date) values('LOG_LOCATION', REPLACE('${MY_LOG_LOCATION}','#{','${'), NOW(), NOW());
为了解决上述故障,我将“${”替换为“$\{”,但这是我没有注意的。
在调试flyway代码时,我看到它在解析SQL时失败(在验证期间,方法org.flywaydb.core.internal.parser.Parser.readToken())。
为什么要把 REPLACE 函数的第三个参数当作占位符?
注意:以上 SQL 在 Flyway v4 中有效
【问题讨论】:
标签: flyway