R2DBC 和 liquibase

R2DBC and liquibase

所以开始一个新项目,我想使用 r2dbc 和 webflux,一直在研究有什么支持来处理数据库迁移。我在这里找到的最后一个答案是从 2019 年 7 月开始的,即 liquibase 不支持 R2DBC,谷歌搜索后,情况似乎仍然如此。

梦想是在本地开发时使用 r2dbc-h2,然后在生产过程中使用类似 postgres 的东西。 Liquibase 将在本地和生产环境中管理 table 结构。

一直在尝试 google 了解一下这样的设置会是什么样子,但那里的信息很少。

我一直在考虑使用 liquibase-maven-plugin 设置 table,但我不知道这是否适用于 r2dbc-h2

那么几个问题:

这对我来说是一个非常黑的洞,有没有人有任何信息?

我觉得在应用中使用2个驱动应该没有问题。由于 liquibase 使用标准 jdbc 驱动程序,您可以将其配置为使用该驱动程序进行迁移,并将 r2dbc 配置为 运行 应用程序。也许需要做一些 tweeks 但我会从这样的事情开始:

spring:
  liquibase:
    url: jdbc:postgresql://localhost:5432/mydb
    user: postgres
  r2dbc:
    url: r2dbc:postgresql://localhost:5432/mydb
    username: postgres

并包括两个库:

io.r2dbc:r2dbc-postgresql
org.postgresql:postgresql

如果有错误请告诉我们。

注意:对于测试,您也可以使用 testcontainers 或嵌入式 postgresql

补充@bilak 的回答,您必须将以下依赖项添加到您的pom.xml:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>

我遇到了同样的问题,我在 application.yml 的 Liquibase 配置中添加了属性 userURL,然后 Spring 开始声称一个 class 未找到,添加此依赖项解决了问题