#java #spring #flyway
Вопрос:
По умолчанию Flyway выполняет поиск миграций, которые начинаются с «V» в папке db/migration
, например: V1_1_0__init_schema.sql
Однако мои миграции имеют следующий шаблон именования (и я не могу изменить свое имя миграции): 20210902193819451__init_schema.sql
Как я могу удалить букву «V» из поведения Flyway по умолчанию, чтобы можно было найти мои миграции?
Я уже пытался установить следующее свойство в своем файле конфигурации: spring.flyway.sql-migration-prefix: ""
, но это не работает, и я получаю следующую ошибку:
Не удалось вызвать метод инициализации; вложенным исключением является org.flywaydb.core.api.исключение.Исключение FlywayValidateException: Ошибка проверки: Миграции не прошли проверку
Комментарии:
1. Я протестировал конфигурацию
spring.flyway.sql-migration-prefix: ""
с тем же форматом файла, что и у вас, и это сработало. Не могли бы вы подробнее рассказать о своем пути к ресурсам, использовании и трассировке стека?
Ответ №1:
В этом случае Flyway-это управляемый пружиной боб. Ваша конфигурация должна быть spring.flyway.sql-migration-prefix=V
такой, как описано здесь.
Внимание, поскольку миграции баз данных должны иметь разные префиксы для управления версиями, отмены и повторяемых миграций. Вы также должны отметить, что проверка сущности может исходить из Flyway (из таблицы flyway_schema_history
), которая проверяет контрольную сумму вашего сценария, и Hibernate, которая проверяет вашу @Entity
модель.
Комментарии:
1. Да, я использую это свойство
spring.flyway.sql-migration-prefix
(я отредактировал свой вопрос). Но проблема в том, что я хочу удалитьV
поведение по умолчанию.2. @Caroline не могли бы вы попробовать использовать файл конфигурации flyway для изменения конфигурации? Формат будет
db/migration/conf/flyway.conf
и с использованиемflyway.sql-migration-prefix
указан здесь .3. Разве это не то же самое, что установить настройки с помощью
spring.flyway.sql-migration-prefix
(которые у меня уже есть), создать файлflyway.conf
и начать использоватьflyway.sql-migration-prefix
?
Ответ №2:
Я решил проблему, добавив в свой application.yml
файл следующие конфигурации:
spring.flyway.sql-migration-prefix: "20"
spring.flyway.sql-migration-separator: "_"
Вместо того, чтобы удалить префикс, я просто заменил его.