Как удалить префикс из имени миграции Flyway?

#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: "_"
 

Вместо того, чтобы удалить префикс, я просто заменил его.