【问题标题】:Can not connect to Heroku's database remotely (Java)无法远程连接到 Heroku 的数据库(Java)
【发布时间】:2017-03-02 10:23:15
【问题描述】:

我正在尝试远程连接到我的数据库:

connection = DriverManager.getConnection(URL);

URL 格式如下(所有 XXX 值均从 Heroku 网站复制):

jdbc:postgresql://XXX:XXX/XXXX?sslmode=require&user=XXX&password=XXXXX

我得到:

org.postgresql.util.PSQLException: FATAL: no pg_hba.conf entry for host "213......, SSL off

我已经跑了(它没有改变“SSL 关闭”状态):

heroku config:set PGSSLMODE=require --app XXXXXX

甚至按照旧帖子中的建议将其添加到 URL 中(尽管我在 Heroku 的文档中没有看到任何内容):

sslfactory=org.postgresql.ssl.NonValidatingFactory

【问题讨论】:

    标签: java postgresql heroku


    【解决方案1】:

    确保您使用的是 PG JDBC 客户端 9.4 或更高版本。您的 JDBC 连接 URL 需要包含 URL 参数:

    sslmode=require
    

    例如:

    jdbc:postgresql://<host>:<port>/<dbname>?sslmode=require&user=<username>&password=<password>
    

    有关更多信息,请参阅 Connecting to a database remotely 上的 Heroku 文档。

    【讨论】:

    • 更新 postgresql .jar 文件是我的解决方案。
    • 既然你是问Heroku的人:为什么执行heroku config:set PGSSLMODE=require --app XXXXXX没有改变错误描述中的“SSL关闭”状态?
    • PGSSLMODE 配置变量不会被数据库获取,因为它在一个隔离的容器中运行。 JDBC 客户端 github.com/pgjdbc/pgjdbc 也不认可它。
    猜你喜欢
    • 2012-04-07
    • 2019-10-16
    • 2023-03-17
    • 2014-05-07
    • 2013-12-14
    • 2017-08-20
    • 2018-07-24
    相关资源
    最近更新 更多