【问题标题】:Quarkus Flyway Placeholders Configuration issueQuarkus Flyway 占位符配置问题
【发布时间】:2021-08-24 23:23:45
【问题描述】:

我无法让 quarkus.flyway.placeholders 在我的 Quarkus 应用程序中工作。 我在 application.properties 文件中定义了这一行

quarkus.flyway.placeholders.myuser=my_user

在我的 sql 文件中我有这一行

GRANT DELETE, INSERT, SELECT, UPDATE ON survey.answers TO ${myuser};

我得到的错误是

org.flywaydb.core.api.FlywayException: No value provided for placeholder: ${myuser}.  Check your configuration!

以下是我尝试过的事情:

  1. 升级到 Quarkus 1.13.6.Final
  2. 尝试设置
quarkus.flyway.placeholder-prefix=#[
quarkus.flyway.placeholder-suffix=]

如集成测试所示: https://github.com/quarkusio/quarkus/tree/main/integration-tests/flyway

谢谢 马修

【问题讨论】:

  • 我刚刚尝试了集成测试中的示例 ``` quarkus.flyway.placeholders.title=REPLACED quarkus.flyway.placeholder-prefix=#[ quarkus.flyway.placeholder-suffix=] `` ` SQL 更改为 ``` GRANT DELETE, INSERT, SELECT, UPDATE ONsurvey.answers TO #[title]; ``` 新错误消息 ``` org.postgresql.util.PSQLException:错误:“#”处或附近的语法错误 ```
  • 我刚试过你提到的集成测试,效果很好

标签: flyway quarkus


【解决方案1】:

我发现您的配置或 sql 脚本中有错字。

使用以下设置:

quarkus.flyway.placeholder-prefix=#[
quarkus.flyway.placeholder-suffix=]

在您的 sql 文件中,占位符应定义为 #[myuser],而不是 $[myuser]

您还可以更改 application.properties 文件中的占位符前缀定义以支持您在 sql 文件中已有的前缀。

【讨论】:

    【解决方案2】:

    有一次我有两个 flyway 用户。 quarkus.flyway.owner 这个有创建权限 quarkus.flyway.user 这个权限少。

    此项目未与用户角色关联。 quarkus.flyway.placeholders.myuser=my_user

    改成quarkus.flyway.owner.placeholders.myuser=my_user后 它开始工作了。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2019-02-15
      • 1970-01-01
      • 2018-08-16
      • 2023-03-25
      • 2022-12-21
      • 2021-07-17
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多