Скрипты до и после миграции для Flyway

Я ищу способ выполнить сценарий ловушки до и после миграции. У меня есть куча представлений и хранимых процедур, и я хотел бы, чтобы процесс был:

  1. Отбросьте все представления и хранимые процедуры.
  2. Запустите миграцию.
  3. Перестроить представления и хранимые процедуры.

Это гарантирует, что любое изменение схемы будет отражено в связанных представлениях и хранимых процедурах. Шаги (1) и (3) будут скриптами bash.

Возможно ли это в Flyway?


person Eli    schedule 28.08.2011    source источник


Ответы (2)


Обновление 2014-04-29: Теперь это возможно в Flyway 3.0 за счет реализации интерфейса FlywayCallback.

Предыдущий ответ

Короткий ответ: нет, не сейчас.

Вот причина: я думал об этом, когда закладывал первоначальный дизайн Flyway. Однако чем больше я думал об этом аспекте, тем яснее мне становилось, что эти пре- и пост-скрипты также являются неотъемлемой частью миграции или, по крайней мере, чем-то, без чего миграция не может обойтись, если она хочет быть успешным. Поэтому я бы рекомендовал либо:

  • Объединение 1, 2 и 3 в одну миграцию
  • Имейте 3 отдельные миграции: x.1 (удаление представлений), x.2 (фактическая миграция), x.3 (восстановление представлений).

Возможно, вы даже сможете использовать хранимые процедуры вызовов x.1 и x.3, которые сделают всю работу за вас, чтобы избежать дублирования кода между миграциями, если эти шаги повторяются.

То, что Flyway позаботится о внесении всех изменений в структуру базы данных, делает все это более простым, позволяя избежать смешения различных технологий.

person Axel Fontaine    schedule 01.09.2011
comment
Я надеялся, что это будет встроено и будет контролироваться конфигурацией Flyway. По сути, у вас есть структура каталогов pre, migrate и post, при этом Flyway выполняет все, что находится в pre, затем выполняет материал в migrate, за которым следует материал post. Я все еще очень новичок в Flyway, поэтому я могу обнаружить, что мой комментарий - чепуха. - person Kuberchaun; 15.03.2012
comment
Я также нашел бы это очень полезным, хотя мне нужно использовать sql вместо скриптов sh. - person orbfish; 09.05.2013
comment
Все еще желаю, чтобы у вас было что-то вроде этого. Всегда есть набор SQL-скриптов, которые мне приходится запускать вручную после миграции, чтобы, например, указать синонимы на правильную схему. - person orbfish; 21.01.2014
comment
Я не понимаю, почему вы не указываете синонимы схемы к сценарию пролетного пути? Для модульного тестирования я обычно пропускаю опцию усечения всех таблиц. Это может быть вариант использования для сценария после миграции (который не может быть сценарием пролетного пути, поскольку он не будет работать, если схема является последней версией). - person eckes; 29.04.2014

Чтобы расширить ответ Акселя: обратные вызовы со сценариями sql просто означают размещение beforeMigrate.sql (например, это одно ключевое слово среди других) в каталог, содержащий миграции, и Flyway выполнит beforeMigrate.sql перед другими сценариями миграции. Даже до того, как schema_version будет заблокирован.

Другие имена обратных вызовов (например, afterMigrate) перечислены в документации по обратным вызовам.

person elmotec    schedule 11.05.2015