我有一个使用单个数据库架构的应用程序。 尽管如此,应用程序有一个核心(具有其DB对象),并且可以使用插件逻辑进行扩展(每个插件都有其DB对象)。 核心数据库对象和插件数据库对象是不同的集合,因为插件是可选的,可能存在也可能不存在。
因此,我需要为Core和每个插件分别进行版本控制和迁移控制。
我想知道是否有某种方式,使用Flyway来管理这些单独的“迁移路径”。
我唯一能想到的就是在托管应用程序的同一个数据库架构下创建许多不同的Flyway元数据表(如schema_version_core,schema_version_plugin1等),并独立管理每个组件的迁移。
这可行吗?有更聪明的建议吗?
非常感谢
答案 0 :(得分:0)
我强烈建议您将数据库拆分为模式,因为这正是它们的用途:管理对象集。
如果这不是一个选项,你建议的替代方案可以正常工作。在调用clean时要小心,因为它会清理整个模式而不仅仅是一个插件的部分。
答案 1 :(得分:0)
我目前正在努力解决同样的问题:一个由几个“基础”组件组成的应用程序,它们都可以拥有自己的数据库对象。
我尝试将所有选项放在同一架构中并使用不同的flyway元表,但这不起作用:当flyway进行处理时,例如第二个模块的第二个表并发现模式不为空(因为第一个模块已迁移其数据库更改),它会停止,因为flyway现在没有机会确定数据库及其迁移的状态。
同样使用基线版本没有帮助,因为在这种情况下基线的更改将适用于下一个模块......我认为flyway唯一合理的解决方案是使用不同的模式....