1

我有一个使用单个数据库模式的应用程序。尽管如此,该应用程序有一个核心(具有其 DB 对象),并且可以使用插件逻辑进行扩展(每个插件都有其 DB 对象)。核心数据库对象和插件数据库对象是不同的集合,因为插件是可选的,可能存在也可能不存在。

因此,我需要对 Core 和每个插件进行单独的版本控制和迁移控制。

我想知道是否有某种方法可以使用 Flyway 来管理这个单独的“迁移路径”。

我唯一能想到的就是在托管应用程序的同一个数据库模式下创建许多不同的 Flyway 元数据表(如 schema_version_core、schema_version_plugin1 等)并独立管理每个组件的迁移。

这是可行的吗?有什么更聪明的建议吗?

非常感谢

4

2 回答 2

0

我强烈建议您将数据库拆分为模式,因为这正是它们的用途:管理对象集。

如果这不是一个选项,那么您建议的替代方案可以正常工作。调用 clean 时要小心,因为它会清理整个架构,而不仅仅是您的插件之一。

于 2013-07-10T11:23:27.240 回答
0

我目前正在努力解决同样的问题:由几个“基本”组件组成的应用程序都可以拥有自己的数据库对象。

我尝试选择将所有内容放在相同的架构中并使用不同的 flyway 元表,但这不起作用:当 flyway 来处理例如第二个模块的第二个表并发现架构不为空时(因为第一个模块已迁移其数据库更改),它停止,因为 flyway 现在没有机会确定数据库的状态及其迁移。

同样使用基线版本也无济于事,因为在这种情况下,下一个模块将跳过基线的更改......我认为使用 flyway 的唯一合理解决方案是使用不同的模式......

于 2016-02-09T08:56:06.313 回答