Spring Boot连接Supabase数据库遇SocketTimeoutException超时错误求助
Spring Boot连接Supabase PostgreSQL超时(SocketTimeoutException)排查方案
核心排查方向及解决方法
1. 检查Supabase IP白名单配置
Supabase默认会限制数据库的访问IP,若本地IP不在白名单内,会直接导致连接超时:
- 登录Supabase控制台,进入「数据库」→「连接池」→「IP白名单」
- 添加本地公网IP(可通过搜索「我的IP」获取),测试阶段可暂时设置为
0.0.0.0/0(生产环境禁止这么做)
2. 修正JDBC连接URL的SSL参数
Supabase强制要求SSL连接,未添加SSL参数会引发连接失败或超时,正确配置格式:
spring.datasource.url=jdbc:postgresql://db.xxx.supabase.co:5432/postgres?sslmode=require spring.datasource.username=postgres spring.datasource.password=your-database-password
注意替换db.xxx.supabase.co为你的Supabase实例域名,your-database-password为设置的数据库密码。
3. 测试网络连通性
本地网络无法访问Supabase的5432端口是常见超时原因:
- 用命令测试端口连通性:
# Linux/macOS nc -zv db.xxx.supabase.co 5432 # Windows(PowerShell) Test-NetConnection db.xxx.supabase.co -Port 5432 - 若测试失败,检查本地防火墙/杀毒软件是否拦截5432端口,或公司网络是否有代理/网关限制,需联系网管添加白名单。
4. 调整连接超时参数
默认超时时间可能不足以应对网络延迟,在application.properties中添加:
# 连接建立超时(毫秒) spring.datasource.hikari.connection-timeout=30000 # Socket读写超时(毫秒) spring.datasource.hikari.socket-timeout=60000
5. 升级PostgreSQL JDBC驱动版本
旧版本驱动可能与Supabase的PostgreSQL版本不兼容,在pom.xml中使用最新稳定版:
<dependency> <groupId>org.postgresql</groupId> <artifactId>postgresql</artifactId> <version>42.6.0</version> <!-- 可替换为更高稳定版 --> </dependency>
6. 核对连接参数正确性
再次确认以下参数无错误:
- Host:必须是Supabase提供的完整域名(如
db.abc123.supabase.co),不能省略前缀或写错 - Username:默认是
postgres,除非在Supabase控制台自定义过,否则不要修改 - Password:确保是设置的数据库密码,注意特殊字符需转义(如密码中的
&要写成\&)
内容的提问来源于stack exchange,提问作者ruwan liyanage
相关产品推荐
相关产品推荐

