我正在尝试在配置了Flyway集成的Micronaut应用程序中运行迁移脚本。该应用程序按预期运行,并在没有任何 Flyway 占位符的情况下应用迁移脚本。但是,每当我将 Flyway 占位符添加到迁移脚本时,由于 FlywayException,应用程序不再启动:
org.flywaydb.core.api.FlywayException: No value provided for placeholder expressions: ${my_placeholder}. Check your configuration!
我尝试使用 Micronaut Flyway 占位符配置属性(如此处所述 https://micronaut-projects.github.io/micronaut-flyway/latest/guide/index.html#io.micronaut.configuration.dbmigration.flyway.FlywayConfigurationProperties)在application.yml
中配置占位符,但根本没有拾取占位符。application.yml
文件如下所示:
flyway:
datasources:
default:
locations: classpath:migrations
placeholders:
my_placeholder: "some value"
我还尝试创建一个flyway.properties
文件,其中占位符根据此 SO 答案中描述的内容定义 https://stackoverflow.com/a/9420671/2185719 但这也没有用
# flyway.properties
flyway.placeholders.my_placeholder=some value
在调试 Flyway 启动(特别是在PlaceholderReplacingLine
中)时,我注意到placeholderReplacer
对象包含一个占位符,其中_
(下划线)已替换为-
(破折号)。在迁移脚本中将my_placeholder
更改为my-placeholder
解决了此问题。