首页 > 解决方案 > R2dbc 不能使用 tcp 处理 h2 数据库

问题描述

我尝试使用 docker 容器 oscarfonts/h2 将 h2 与 r2dbc 一起使用。默认情况下,使用这个容器时,我们必须使用 tcp 协议,

当我尝试将它与 r2dbc 一起使用时。我收到以下明确的错误消息:

由于类 java.lang.IllegalArgumentException 重试获取数据库连接:不支持协议选项 tcp(文件、内存)

文档 r2dbc h2 说它应该与 tcp 协议一起使用。可以?

相应地使用 spring boot 2.3.0.RELEASE 和 r2dbc 版本。

标签: javah2spring-data-r2dbcr2dbc

解决方案


R2DBC H2 是 H2 数据库的一个小型包装器。这意味着整个基础设施使用与 JDBC 相同的 H2 实现,这都是阻塞的。

因此,在使用 R2DBC 时不应通过 TCP 使用 H2,而应使用具有适当非阻塞 I/O 实现的不同数据库(MySQL、MariaDB、Postgres、SQL Server)。


推荐阅读