postgresql - postgres r2dbc 给出 ssl 错误,但使用 jpa 连接
问题描述
r2dbc 配置:
spring: profiles: default r2dbc: url: r2dbc:postgresql://testserver.dev.net:1234/test?ssl=true&sslmode=require username: test password: test connection_timeout: 20000
jpa配置:
spring: profiles: default datasource: url: jdbc:postgresql://testserver.dev.net:1234/test?ssl=true&sslmode=require username: test password: test hikari: connectionTimeout: 20000 maximumPoolSize: 5
jpa 连接工作正常并返回结果,r2dbc 无法连接到服务器瞄准无法找到有效证书
原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
在 r2dbc 和 ssl 关闭的情况下,它说 pg_hba.conf 没有主机条目。为什么它只要求带有 r2dbc 配置的证书。
与 r2dbc 的依赖关系:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r2dbc</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>io.r2dbc</groupId> <artifactId>r2dbc-postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <scope>runtime</scope> </dependency> <dependency>
对于 jpa,我使用的是 spring web starter 和 jpa starter,两者都是 spring 版本 2.4.1。我被这个困住了,找不到这个错误的原因。欢迎任何解决方案。
解决方案
您需要将 r2dbc url 中的“sslmode”参数更改为“sslMode”。如果您没有将 sslMode 作为参数传递,R2dbc 似乎默认 sslmode 为“verify-full”,这就是为什么您会看到无法找到证书的异常。
推荐阅读
- sql-server - 在字符串中捕获字符串
- php - 在 Laravel 中返回数据库查询时更改字段值
- python - 如何根据特定列在 Pandas Dataframe 中上移行
- javascript - 支付成功后JS Api重定向到404
- c - 为什么 stat(2) 在位置 /proc/
/ 总是给出一个空大小 - python - 仅获取图像中的外部轮廓
- spring - Mockito 模拟基于构造函数的 api 调用调用
- ldap - 如何在 Erlang 中设置 ldap 搜索结果的限制
- java - 如何使 SQL 删除方法正确验证数据
- python-3.x - Pandas_datareader 错误符号警告:无法读取符号:'T',替换为 NaN