Flywaydb用于迁移的多个配置文件失败

时间:2018-07-25 12:57:05

标签: flyway

我们尝试将某些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                                            |
+----------+---------+-------------+------+--------------+-------+

请帮助我们解决该问题。

1 个答案:

答案 0 :(得分:1)

Flyway合并配置文件。它不会为每个迁移单独进行迁移。

对于每个配置文件,Flyway adds the content to a Properties mapProperties每个键只有一个值,因此如果同一键出现在第二个配置文件中,它将覆盖先前的值。这就是为什么似乎只使用了最后一个配置文件中的设置的原因。

它允许您在某处定义一些常用设置,例如在~/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

文档将Overriding Order描述为:

  • 命令行参数
  • 环境变量
  • 自定义配置文件
  • <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命令行默认值

相应的示例可能是:

  

这意味着,例如,如果自定义配置文件1 自定义配置文件2 中都同时存在flyway.url,则自定义配置文件2 设置将被优先使用。

类似地,如果flyway.url也在自定义配置文件n 中,则会覆盖自定义配置文件2 中的设置。