Развертывание в нескольких схемах с использованием Flyway

#schema #flyway

#схема #flyway

Вопрос:

У меня есть вопрос относительно Flyway и управления несколькими схемами. У меня есть несколько схем (schema1, schema2, schema3) с разными расписаниями развертывания и разными расположениями папок (sql / schema1, sql / schema2, sql / schema3) с разным кодом.

Я хочу, чтобы Flyway создавал схемы перед развертыванием кода, но как мне настроить это в одном файле конфигурации? Я прочитал документ Flyway (https://flywaydb.org/documentation/faq#multiple-schemas ) но используется ли в примере один конфигурационный файл? или мне нужно создать несколько файлов конфигурации (по одному на схему)?

Могу ли я добиться одинаковой настройки списка схем, разделенного запятыми? будет ли «Schema1» отображаться только в расположении «sql / Schema1«? Я действительно не хочу, чтобы Schema1 извлекал код из другой папки, т. Е. sql / Schema2 и т.д.

Заранее спасибо!

Ответ №1:

При использовании Flyway с несколькими схемами вам необходимо явно указать в операторах sql, какую схему sql собирается изменить. Вы можете сделать это, поместив ALTER SESSION SET CURRENT_SCHEMA=schema1 в начало каждого файла миграции или добавив ко всем своим операторам префикс типа CREATE TABLE schema1.bananas . Если это непрактично, было бы лучше создать несколько конфигурационных файлов, в каждом из которых указана одна схема и указано одно местоположение. например

 flyway.schemas=schema1
flyway.locations=filesystem:sql/schema1
  

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