You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot本地连接Heroku PostgreSQL插件报错求助

解决本地Spring Boot连接Heroku PostgreSQL的常见问题

我来帮你梳理下这两个问题的原因和解决办法:

第一个错误:java.sql.SQLException: Driver:org.postgresql.Driver@20999517 returned null for URL

这个问题的根源很直接——JDBC URL的协议前缀写错了。PostgreSQL的JDBC驱动只识别jdbc:postgresql://这个前缀,而你一开始用的是jdbc:postgres://,少了一个ql,驱动自然无法识别这个URL格式,所以返回了null。

第二个错误:org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "...", SSL off

你已经意识到要加sslmode=require,但可能配置没有完全生效。Heroku PostgreSQL强制要求所有外部连接(包括本地调试)必须使用SSL,仅仅在URL里加参数有时候可能因为连接池的配置优先级问题不生效,需要额外明确配置。

正确的配置方案

把你的application.properties改成下面这样:

# 修正协议前缀 + 强制SSL
spring.datasource.url=jdbc:postgresql://ec2-23-21-201-255.compute-1.amazonaws.com:5432/d6eqamh4egp1g0?sslmode=require
spring.datasource.username=qfxqpoceljdtfo
spring.datasource.password=你的实际密码
spring.datasource.driver-class-name=org.postgresql.Driver

# 针对Spring Boot默认的Hikari连接池,明确开启SSL
spring.datasource.hikari.data-source-properties.ssl=true
spring.datasource.hikari.data-source-properties.sslmode=require

额外验证步骤

  1. 确认Gradle依赖正确:确保你的build.gradle里引入了最新稳定版的PostgreSQL驱动:
    implementation 'org.postgresql:postgresql:42.6.0'
    
  2. 用Heroku CLI验证凭证有效性:执行你提供的命令测试连接:
    heroku pg:psql postgresql-metric-82455 --app battlesh1p
    
    如果能成功进入PostgreSQL命令行,说明你的数据库凭证是完全正确的,问题只在应用配置上。

本地调试小贴士

  • 本地调试时可以暂时硬编码密码,但上线前一定要改用环境变量或者Spring Cloud Config等方式管理敏感信息,避免泄露。
  • 如果还是遇到SSL相关问题,可以尝试添加sslfactory=org.postgresql.ssl.NonValidatingFactory参数到URL(仅本地调试用,生产环境不建议),跳过证书验证:
    spring.datasource.url=jdbc:postgresql://ec2-23-21-201-255.compute-1.amazonaws.com:5432/d6eqamh4egp1g0?sslmode=require&sslfactory=org.postgresql.ssl.NonValidatingFactory
    

内容的提问来源于stack exchange,提问作者Andrea deCandia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:12:53