Как заставить flyway повторно -запустить миграцию?

НАША СИСТЕМА

Мы пытаемся поместить миграции в виде файлов.sql под контроль версий. Разработчики должны написать файл VN __*.sql, зафиксировать контроль версий, а задание, которое запускается каждые 5 минут, будет автоматически переноситься в базу данных Dev и Test. Как только изменение не вызовет проблем, кто-то другой вручную запустит миграцию в рабочей среде.

МОЯ ПРОБЛЕМА:

У меня была демонстрационная миграция, которая создала несколько таблиц. Я проверил V4 __DemoTables.sql в системе контроля версий на своем ПК.

В нашей системе Linux задание, которое запускается каждые 5 минут, извлекает новый файл из системы управления версиями, а затем запускает файл flyway.sh. Он обнаружил файл и запустил его.

Но в файле.sql была опечатка. И мы используем Neteeza, у которого есть проблемы с flyway, автоматически переносящим миграцию в BEGIN TRAN... END TRAN.Таким образом, миграция создала 2 таблицы, а затем прервалась перед третьей.

Нет проблем, подумал я. Я удалил 2 таблицы, созданные файлом.sql. Проверил V4 __вне контроля версий, исправил опечатку и повторно -отправил его.

Через пять минут обновление было извлечено, но flyway жалуется, что контрольная сумма не совпадает. Таким образом, он НЕ будет запускать обновленный файл V4 __DemoTables.sql.

Как заставить flyway принять обновленный файл и обновить контрольную сумму в файле SCHEMA _VERSION в случае опечатки?

Читая документы, кажется, что разработчики предполагают, что я должен был создать новый файл V4 _1 _DemoTables.sql с исправлениями. Но это столкнулось бы с командами в файле V4 __, так что это казалось неправильным.

Итак, вот что мне нужно сделать в документации:

  • Оставьте V4 __как «успешную» миграцию в соответствии с СХЕМА _ВЕРСИЯ таблица.

    Создайте V4 _1 _, чтобы удалить таблицы, которые были созданы до опечатки строка в V4 __.

    Создайте V4 _2 _, в которой есть исправление опечатки из исходного файла, чтобы сделать все настоящая работа.

Это верно?

9
задан Bob Mac 24 July 2012 в 18:19
поделиться