Spring boot r2dbc 和 jdbc Liquibase 不会在应用程序启动时更新

问题描述 投票:0回答:1

我希望我的应用程序在运行时使用 r2dbc 驱动器,并使用 jdbc 使用 Liquibase 处理数据库。我有this作为参考。可以通过在

application.properties
build.gradle.kts
内添加正确的配置来实现这一点。更新后一切正常,但不是自动的。你有什么建议吗?Spring的参考

spring-boot jdbc liquibase r2dbc
1个回答
1
投票

您有两种选择在 R2bc 应用程序中使用数据库迁移(例如 Liquibase)。

  1. 到目前为止,Liquibase 还不支持 R2dbc,并且默认情况下 R2dbc 和 Jdbc 无法在单个 Spring boot 应用程序中激活。在响应式 Spring Boot 应用程序中,虽然您添加了 Jdbc 启动器,但默认情况下它并未激活。

    但是您可以在 R2dbc 应用程序中设置 liquibase,并配置 Liquibase Maven/Gradle 插件以通过 Gradle 任务/Maven 目标手动迁移数据库。请参阅我的示例:liquibase-maven-r2dbc,确保数据库正在运行,然后在项目根目录中执行

    mvn liquibase:update

    请参阅 Liquibase Maven 插件的官方指南,https://docs.liquibase.com/tools-integrations/maven/workflows/using-liquibase-maven-plugin-and-springboot.html

    如果您的数据库迁移脚本位于项目之外(或者作为特定项目仅包含脚本),并且由 dbamin 或通过 CI/CD 管道维护,Liquibase/flyway 都提供独立的 CLI 工具。 CLI 是一个不错的选择。因此它将脚本与您的主项目分开。

  2. 直接使用R2dbc Migrate,它与Flyway类似,但与2rdbc一起使用。请参阅我的示例:r2dbc-migrate

更新:在最新的 Spring Boot 3.x 中,似乎可以在 WebFlux 项目中设置 Liquibase/flyway,您必须添加 jdbc 驱动程序并设置连接配置(不要使用数据源)。但我想使用指定为响应式堆栈的 R2dbcMigrate。

© www.soinside.com 2019 - 2024. All rights reserved.