Миграция нескольких схем с различным жизненным циклом с использованием Flyway и Spring Boot - PullRequest
0 голосов
/ 06 мая 2018

FAQ Flyway разделяет три случая нескольких схем:

  1. Несколько идентичных схем
  2. Схемы различны, но имеют одинаковый жизненный цикл
  3. Схемы имеют отдельный жизненный цикл или должны быть автономными и четко разделенными

Мы создаем многомодульный проект Spring Boot 4.5.9 с использованием Maven. Каждый модуль полностью независим и имеет свою собственную схему базы данных. Все схемы находятся в одной базе данных, поэтому существует только один источник данных Spring.

Поскольку модули являются независимыми, мы хотим управлять миграциями соответствующих схем отдельно, поэтому наиболее подходящим является вариант (3), приведенный выше.

Однако я не смог найти способ настроить интеграцию Spring Boot с Flyway так, как предлагает FAQ по Flyway:

Использовать несколько экземпляров Flyway. Каждый экземпляр управляет своей собственной схемой и ссылается на свою собственную таблицу истории схемы. Разместите миграции для каждой схемы в отдельном месте.

В идеале каждый модуль должен иметь собственную папку db/migration со своими собственными сценариями миграции SQL. Версии скрипта каждого модуля должны быть независимыми от версий скрипта в других модулях, а история миграции каждого модуля должна храниться в таблице в схеме этого модуля.

Если я помещаю сценарии миграции в папку resources/db/migration каждого модуля, flyway обнаруживает их, но затем жалуется, что:

org.flywaydb.core.api.FlywayException: Found more than one migration with version 0

Кто-нибудь знает, как можно выполнить необходимые настройки?

P.S. конечная цель всего этого - иметь возможность (однажды, когда система масштабируется) перенести эти модули в отдельные сервисы, не проходя ад, разбивая базу данных на несколько частей.

...