2015-01-09 102 views
0

我正在开发一个允许使用插件的网络应用程序(插件不仅会在运行时更改,而且更像是一个订购软件的插件A,B,C和选择将很少改变)。允许使用插件的飞行路线和应用程序

一些插件需要在数据库模式中添加自己的表。核心架构目前由flyway管理,这使得迁移变得如此简洁而且无痛,我想继续这样做。 应该在同一模式中创建新表,以便可以共享JDBC连接,并且插件表可以将外键包含到核心表中。

但据我了解,flyway不会接受多个引用相同模式的flyway实例。那是对的吗?有没有其他方法可以让场景起作用?

回答

1

应该在相同模式中创建新表,以便可以共享JDBC连接,并且插件表可以将外键包含到核心表中。

这不一定是这种情况。您可以为每个插件分配自己的架构和Flyway实例。你可以在模式之间有外键,你可以可以通过同一个连接引用多个模式。

如果这不是一个选项,每个插件仍然有一个Flyway实例(每个都有自己的元数据表),请注意,如果它们全都指向相同的模式,则在任何一个插件上调用clean()他们将擦除整个模式。

最后,您还可以拥有一个版本控制命名空间,其中某些迁移在某些环境中根本不存在(插件未安装)。

+0

值得注意的是,元数据表配置了'flyway.table'属性,并且flyway会在第一次尝试迁移时抱怨数据库不是空的。这可以通过设置'flyway.baselineVersion = 0'' flyway.baselineOnMigrate = true'来绕过,然后正常迁移。 – yankee 2015-01-11 22:08:12

相关问题