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

Търся начин да изпълня hook скрипт преди и след миграцията. Имам куп изгледи и съхранени процедури и бих искал процесът да бъде:

  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 stuff. Все още съм съвсем нов във 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

За да разширите отговора на Axel: обратните извиквания с sql скриптове просто означава поставяне на beforeMigrate.sql (например, това е една ключова дума сред другите) в директорията, съдържаща миграциите, и Flyway ще изпълни beforeMigrate.sql преди другите скриптове за миграция. Дори преди schema_version да бъде заключен.

Други имена на обратно извикване (напр. afterMigrate) са изброени в документация за обратно извикване.

person elmotec    schedule 11.05.2015