用于迁移的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                                            |
+----------+---------+-------------+------+--------------+-------+

请帮助我们解决同样的问题。

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

对于每个配置文件,Flyway都会将内容添加到Properties映射中。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的该设置。

最新更新