3

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

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

一直在尝试用谷歌搜索一下这种设置的外观,但那里的信息很少。

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

所以几个问题:

  • 如何设置以便 liquibase 在迁移期间使用常规驱动程序,而应用程序的其余部分使用反应式驱动程序?
  • 如果使用 maven 插件,这可以与 H2 一起使用还是我需要 postgres 作为 docker?

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

4

2 回答 2

12

我认为在应用程序中使用 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

于 2020-06-25T15:28:53.197 回答
2

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

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

我遇到了同样的问题,我已经在我的 application.yml 上添加了属性userURLLiquibase 配置,然后 Spring 开始声称找不到一个类,添加了这个依赖

于 2020-08-21T15:38:36.447 回答