Есть ли способ выполнить повторяющиеся сценарии пролетного пути в первую очередь? - PullRequest
1 голос
/ 19 апреля 2020

Мы годами используем flyway для поддержки наших сценариев БД, и это прекрасно работает. Однако есть одна ситуация, когда я не очень доволен - возможно, у кого-то есть решение:

Для того, чтобы уменьшить количество необходимых сценариев (а также для того, чтобы иметь представление о том, «где» наши процедуры определены) Я хотел бы реализовать наши функции / процедуры в одном скрипте. Каждый раз, когда процедура изменяется (или разрабатывается новая), этот скрипт должен обновляться - повторяющиеся скрипты звучат идеально для этой цели, но, к сожалению, это не так.

Недостатком является то, что новая процедура недоступна для неповторяемых сценариев, поскольку повторяемые сценарии выполняются последними, поэтому процедура не существует, когда выполняется неповторяемый сценарий.

Я надеялся, что смогу контролировать это, указав различные местоположения (например, loc_first, содержащий повторяемые элементы, которые я хочу выполнить первыми, loc_normal для стандартных сценариев и повторяемые элементы, которые должны выполняться последними).

К сожалению, порядок расположения не влияет на порядок выполнения ;-(

Какой правильный способ справиться с этой ситуацией? Сейчас мне нужно указать соответствующие процедуры в неповторяемых скриптах , но это именно то, чего я хотел бы избежать ....

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Я нашел обходной путь самостоятельно: я использую flyway напрямую с maven (то же самое будет работать, если вы, конечно, используете API). Каждый этап моего maven-скрипта имеет свой собственный профиль (с указанием URL et c.)

Теперь я создаю два профиля для каждого этапа - поэтому у меня есть, например, dev и devProcs.

Разница между этими двумя профилями maven заключается в том, что профиль «[stage] Procs» работает в другом месте (где сохраняются только повторяемые сценарии, поддерживающие процедуры). Затем мне нужно выполнить flyway дважды - сначала с помощью [stage] Procs, а затем с [stage].

Для меня это выглядит немного грязно, но, по крайней мере, я могу поддерживать свои процедуры в повторяющемся сценарии таким образом.

0 голосов
/ 19 апреля 2020

Согласно документам о пролетных путях , повторяемые миграции ВСЕГДА выполняются после версионной миграции.

Но, я думаю, вы можете использовать Обратные вызовы Flyway . Похоже, beforeMigrate.sql обратный вызов это именно то, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...