Проблема с конфигурацией заполнителей взлетно-посадочной полосы Кваркуса

#flyway #quarkus

Вопрос:

У меня возникли проблемы с получением кваркуса.flyway.заполнители, работающие в моем приложении 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.Окончательный
  2. Попробовал установить
 quarkus.flyway.placeholder-prefix=#[
quarkus.flyway.placeholder-suffix=]
 

Как показано в интеграционном тесте:
https://github.com/quarkusio/quarkus/tree/main/integration-tests/flyway

Спасибо, Мэтью

Комментарии:

1. Я только что попробовал примеры из интеграционного теста « кваркус. flyway.заполнители.название=ЗАМЕНЕН кваркус. flyway.заполнитель-префикс=#[ кваркус. flyway.заполнитель-суффикс=] « SQL изменен на « РАЗРЕШИТЬ УДАЛЕНИЕ, ВСТАВКУ, ВЫБОР, ОБНОВЛЕНИЕ ПРИ опросе.ответы НА #[название]; « Новое сообщение об ошибке ` » org.postgresql.util. Исключение PSQLException: ОШИБКА: синтаксическая ошибка в или около «#» «

2. Я только что попробовал интеграционный тест, о котором вы упомянули, и он работает просто отлично

Ответ №1:

Я вижу, что у вас есть опечатка в вашей конфигурации или сценарии sql.

Со следующими настройками:

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

В вашем файле sql заполнитель должен быть определен как a #[myuser] , а не $[myuser]

Вы также можете изменить определение префикса-заполнителя в своем application.properties файле, чтобы поддерживать префикс, который уже есть в файле sql.

Ответ №2:

В свое время у меня было два пользователя flyway. кваркус.flyway.владелец этого имеет привилегии создания кваркуса.flyway.у этого пользователя меньше привилегий.

Этот элемент не был связан с ролью пользователя. кваркус.flyway.заполнители.myuser=мой пользователь

После смены его на кваркус.flyway.владелец.заполнители.myuser=my_user он начал работать.