Не удается выполнить миграцию нескольких файлов конфигурации Flywaydb

Мы попытались перенести несколько версий SQL в одну базу данных, и все прошло успешно. Когда попытка реализовать миграцию для нескольких баз данных одновременно путем передачи нескольких файлов конфигурации терпит неудачу.

Проблема в том, что требуется только последний файл конфигурации, а миграция выполняется только для базы данных, упомянутой в последнем файле конфигурации, при передаче нескольких файлов конфигурации в параметре «-configFiles».

Ниже скриншот того же самого, взял только flywayconfdb.conf файла и оставил другие файлы.

[oracle@localhost flyway-5.1.4]$ ./flyway -configFiles=/home/oracle/flyway/flyway-5.1.4/conf/flyway.conf,/home/oracle/flyway/flyway-5.1.4/conf/flywayjiradb.conf,/home/oracle/flyway/flyway-5.1.4/conf/flywayconfdb.conf info
Flyway Community Edition 5.1.4 by Boxfuse

Database: jdbc:oracle:thin:@//XXXXXXXXX:1521/confdb (Oracle 12.2)
Schema version: << Empty Schema >>

+----------+---------+-------------+------+--------------+-------+
| Category | Version | Description | Type | Installed On | State |
+----------+---------+-------------+------+--------------+-------+
| No migrations found                                            |
+----------+---------+-------------+------+--------------+-------+

Пожалуйста, помогите нам в решении того же.


person Arvind    schedule 25.07.2018    source источник


Ответы (1)


Flyway объединяет файлы конфигурации. Он не выполняет отдельную миграцию для каждого из них.

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

Это позволяет вам определить некоторые общие настройки где-нибудь, например, в ~/flyway.conf, которые могут быть объединены с некоторыми более специфическими настройками, например. в индивидуальных проектах.

Но он не позволяет вам мигрировать несколько баз данных за один раз. Вам нужно запустить Flyway один раз для каждой базы данных:

./flyway -configFiles=/home/oracle/flyway/flyway-5.1.4/conf/flywayjiradb.conf info
./flyway -configFiles=/home/oracle/flyway/flyway-5.1.4/conf/flywayconfdb.conf info

В документации основной приказ описывается следующим образом:

  • Аргументы командной строки
  • Переменные среды
  • Пользовательские файлы конфигурации
  • <current-dir>/flyway.conf
  • <user-home>/flyway.conf
  • <install-dir>/conf/flyway.conf
  • Параметры командной строки Flyway по умолчанию

С настройками, определенными выше по списку, они имеют больший приоритет.

В документации приведен следующий пример:

Это означает, что если, например, flyway.url присутствует в файле конфигурации и передан как -url= из командной строки, аргумент командной строки будет иметь приоритет и использоваться.

Строки пользовательских конфигурационных файлов (-configFiles) могут быть расширены следующим образом:

  • Аргументы командной строки
  • Переменные среды
  • Пользовательский файл конфигурации n
  • ...
  • Пользовательский файл конфигурации 2
  • Пользовательский файл конфигурации 1
  • <current-dir>/flyway.conf
  • <user-home>/flyway.conf
  • <install-dir>/conf/flyway.conf
  • Параметры командной строки Flyway по умолчанию

И соответствующий пример может быть:

Это означает, что если, например, flyway.url присутствует в настраиваемом файле конфигурации 1 и настраиваемом файле конфигурации 2, настройки настраиваемого файла конфигурации 2 будет иметь приоритет и использоваться.

Точно так же, если бы flyway.url также был в настраиваемом файле конфигурации n, этот параметр переопределял бы этот параметр из настраиваемого файла конфигурации 2.

person codemonkey    schedule 26.07.2018
comment
Спасибо за комментарии. Ниже приведена документация по пролетному пути. Я пытаюсь понять, указывают ли имена баз данных, которые упоминаются в нескольких файлах конфигурации, на одну или несколько баз данных? Чтобы передать несколько файлов, разделите их имена запятыми: › flyway -configFiles=path/to/myAlternativeConfig.conf,other.conf migrate Относительные пути относятся к текущему рабочему каталогу. flywaydb.org/documentation/commandline - person Arvind; 27.07.2018
comment
Даже если myAlternativeConfig.conf и other.conf действительно указывают на разные базы данных, будет использоваться только flyway.url из other.conf, так как он переопределит тот, что в myAlternativeConfig.conf. Документация описывает приоритетный порядок здесь: flywaydb.org/documentation/commandline/#overriding-order< /а> - person codemonkey; 27.07.2018
comment
Обновлен мой ответ с некоторыми дополнительными подробностями. Это отвечает на ваш вопрос? Надеюсь, это имеет смысл. - person codemonkey; 27.07.2018
comment
Да, теперь это имеет смысл. Большое спасибо за понимание. - person Arvind; 27.07.2018