【问题标题】:Multimodule Spring boot application Flyway migration scripts多模块 Spring boot 应用程序 Flyway 迁移脚本
【发布时间】:2020-08-20 06:10:45
【问题描述】:

我有一个多模块 Spring 启动应用程序(为简单起见,它只是模块 A 和模块 B)。两个模块都访问同一个数据库。此外,我使用 flyway 来初始化表并将初始数据填充到数据库中。

当我使用naming schema of flyway 时遇到了问题

模块A 中的V1_0__init.sql 与模块B 中的V1_0__init.sql 发生冲突。

我知道我可以将其中一个文件重命名为 V1_1__init.sql 并且它可以工作。但想法是模块可以共存而不知道迁移脚本在另一个模块中是如何命名的。 flyway可以做到这一点吗?

【问题讨论】:

    标签: spring-boot flyway


    【解决方案1】:

    名称不能冲突,因为 Flyway 正在创建历史日志,并且具有不同定义的两个同名文件将创建日志的非幂等执行。

    但是让我们回到真正的问题...为什么要使用一个数据库编写两个模块?这比 Flyway 命名滥用更成问题。我可以设想解决这个问题的方法,但是当基础有缺陷时,我不想提及任何想法。如果一个模块需要来自另一个模块的数据,您需要在它们之间构建接口(或拉出到第三个),因为您违反了关注点的模块化分离。简单地说:不要这样做。

    【讨论】:

    • 这个想法是有一个模块化的应用程序,其中某些模块可以很容易地排除在某些部署中。有些模块有一些额外的功能,不应该每次都发布。如果不在单独的模块中,您将如何构建这样的项目?
    • 拆分模块,在构建时通过配置组合它们,在运行时通过配置或权限服务编排它们。
    猜你喜欢
    • 2016-09-13
    • 2020-08-20
    • 2018-02-28
    • 2018-08-16
    • 2019-08-07
    • 2020-02-23
    • 2020-05-16
    • 2018-10-07
    • 1970-01-01
    相关资源
    最近更新 更多