#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 с каждым файлом конфигурации по отдельности, чтобы перенести эту конкретную схему.