Подтвердить что ты не робот

Пропускная отметка пролета Flyway 3.0 Несоответствие контрольной суммы миграции

после обновления плагина Flyway Maven с 2.3 до 3.0 я получаю:

[ERROR] Не удалось выполнить цель org.flywaydb: flyway-maven-plugin: 3.0: migrate (default-cli) в проекте xxx: org.flywaydb.core.api.FlywayException: проверка завершена. Найденный различия между применяемыми миграциями и доступными миграциями: Несоответствие контрольной суммы миграции для миграции V003__data_feed_sources_locations.sql: DB = 942424992, Classpath = 1117634405 → [Помощь 1]

Получена аналогичная ошибка для другого проекта.

Если я откажусь назад до 2.3, миграция начнется нормально. Это имеет какое-то отношение к различной платформенной кодировке для вычисления контрольных сумм?

Любое обходное решение или, еще лучше, правильное решение?

Привет

4b9b3361

Ответ 1

Flyway 3.0 изменил значение по умолчанию validateOnMigrate на true.

Это, однако, хорошо, поскольку в духе неудачной попытки ошибки обнаруживаются раньше.

В вашем случае некоторые скрипты изменились с тех пор, как они были применены, о чем сообщает Flyway.

У вас есть два варианта:

  • подавить ошибку, установив validateOnMigrate в false (2.3 по умолчанию)
  • вызывать Flyway.repair() для перевыбора контрольных сумм.

Ответ 2

Чтобы добавить к Axel Fontaine ответ:

Мне удалось использовать mvn flyway: repair, но мне пришлось указать свойство конфигурации flyway.locations в папке, содержащей мои сценарии миграции db. В противном случае я бы получил сообщение "Ремонт таблицы метаданных xyz.schema_version не требуется". как упомянуты другие люди.

Я использовал mvn -Dflyway.locations=filesystem:<project dir>/src/main/resources/db/migrations flyway:repair, и я видел, что контрольная сумма обновлена ​​в таблице метаданных, исправляя мою проблему.

Ответ 3

Проблема возникает сразу после того, как я сменил файл V1_2__books.sql ddl. Должен быть лучший способ заставить flyway распознавать новые изменения.

Я пытался запустить mvn flyway: repair, но это не сработало, я в конечном итоге изменил url схемы в файле application.properties [datasource.flyway.url] на books2

Я удалил также следующие файлы (книги - это мое старое имя схемы)

~ @~:rm books.mv.db 
~ @~:rm -r books.trace.db 
datasource.flyway.url=jdbc:h2:file:~/books2
datasource.flyway.username=sa
datasource.flyway.password=
datasource.flyway.driver-class-name=org.h2.Driver

Я запустил приложение и BINGO:)

Ответ 4

Существует еще одно решение. Вы можете отменить переход из таблицы schema_version.