R2DBC 和 liquibase
R2DBC and liquibase
所以开始一个新项目,我想使用 r2dbc 和 webflux,一直在研究有什么支持来处理数据库迁移。我在这里找到的最后一个答案是从 2019 年 7 月开始的,即 liquibase 不支持 R2DBC,谷歌搜索后,情况似乎仍然如此。
梦想是在本地开发时使用 r2dbc-h2
,然后在生产过程中使用类似 postgres 的东西。 Liquibase 将在本地和生产环境中管理 table 结构。
一直在尝试 google 了解一下这样的设置会是什么样子,但那里的信息很少。
我一直在考虑使用 liquibase-maven-plugin
设置 table,但我不知道这是否适用于 r2dbc-h2
。
那么几个问题:
- 如何设置以便 liquibase 在迁移期间使用常规驱动程序,而应用程序的其余部分使用反应式驱动程序?
- 如果使用 maven 插件,它可以与 H2 一起使用吗?还是我需要 postgres 作为 docker?
这对我来说是一个非常黑的洞,有没有人有任何信息?
我觉得在应用中使用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 配置中添加了属性 user
和 URL
,然后 Spring 开始声称一个 class 未找到,添加此依赖项解决了问题
所以开始一个新项目,我想使用 r2dbc 和 webflux,一直在研究有什么支持来处理数据库迁移。我在这里找到的最后一个答案是从 2019 年 7 月开始的,即 liquibase 不支持 R2DBC,谷歌搜索后,情况似乎仍然如此。
梦想是在本地开发时使用 r2dbc-h2
,然后在生产过程中使用类似 postgres 的东西。 Liquibase 将在本地和生产环境中管理 table 结构。
一直在尝试 google 了解一下这样的设置会是什么样子,但那里的信息很少。
我一直在考虑使用 liquibase-maven-plugin
设置 table,但我不知道这是否适用于 r2dbc-h2
。
那么几个问题:
- 如何设置以便 liquibase 在迁移期间使用常规驱动程序,而应用程序的其余部分使用反应式驱动程序?
- 如果使用 maven 插件,它可以与 H2 一起使用吗?还是我需要 postgres 作为 docker?
这对我来说是一个非常黑的洞,有没有人有任何信息?
我觉得在应用中使用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 配置中添加了属性 user
和 URL
,然后 Spring 开始声称一个 class 未找到,添加此依赖项解决了问题