【问题标题】:Cannot connect to heroku PostgreSQL db无法连接到 heroku PostgreSQL 数据库
【发布时间】:2014-03-30 17:07:23
【问题描述】:

我将使用一个简单的 java 程序连接到我的 heroku Postgres 数据库。但是如果我尝试连接我会得到一个错误。谁能解释我的问题或可以解决这个问题?

谢谢 :D

代码:

public static void main(String[] args) throws InstantiationException,
        IllegalAccessException, ClassNotFoundException {
    System.out.println("-------- PostgreSQL "
            + "JDBC Connection Testing ------------");
    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException e) {
        System.out.println("Where is your PostgreSQL JDBC Driver? "
                + "Include in your library path!");
        e.printStackTrace();
        return;
    }
    System.out.println("PostgreSQL JDBC Driver Registered!");
    Connection connection = null;
    try {
        // ========>     from heroku website
        String url = "jdbc:postgresql://ec2-107-20-214-225.compute-1.amazonaws.com:5432/databasename";
        Properties props = new Properties();
        props.setProperty("user", "someusername");
        props.setProperty("password", "somepassword");
        props.setProperty("ssl", "true");
        connection = DriverManager.getConnection(url, props);
    } catch (SQLException e) {

        System.out.println("Connection Failed! Check output console");
        e.printStackTrace();
        return;
    }...

输出:

-------- PostgreSQL JDBC Connection Testing ------------
PostgreSQL JDBC Driver Registered!
Connection Failed! Check output console
org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:225)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:64)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:138)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:29)
...
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    ...

【问题讨论】:

标签: java postgresql heroku jdbc


【解决方案1】:

我遇到了同样的问题,但我必须使用 2 个设置才能让它工作:

String url = "jdbc:postgresql://ec2-107-20-214-225.compute-.amazonaws.com:5432/databasename?ssl=true&sslmode=require

ssl=true

sslmode=require

【讨论】:

    【解决方案2】:

    sslmode添加到数据库url:

    字符串网址 = "jdbc:postgresql://ec2-107-20-214-225.compute-.amazonaws.com:5432/databasename?sslmode=require

    【讨论】:

    • 我猜只是 ssl 而不是 sslmode。
    【解决方案3】:

    感谢卢卡斯·埃克伦德!

    我的网址应该是这样的:

    String url = "jdbc:postgresql://ec2-107-20-214-225.compute-1.amazonaws.com:5432/databasename
    ?user=someusername&password=somepassword
    &ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory";
    

    【讨论】:

    猜你喜欢
    • 2013-04-19
    • 2013-04-05
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2017-11-27
    • 2013-10-07
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多