通过JDBC连接到PostgreSQL数据库时出现连接问题

时间:2019-12-17 07:25:44

标签: java postgresql jdbc

我有一个IP地址192.168.218.18 每当连接尝试失败时,每次收到消息时,我都尝试了多种方法连接到该服务器。 出于安全原因,我已经隐藏了用户名和密码。

代码:

public static void main(String[] args) {

String url = "jdbc:postgresql://192.168.218.18:5432/manikanta?user=*****&password=*****&ssl=true";
        try {

            Connection conn = DriverManager.getConnection(url);

            System.out.println("connection established");
        } catch (SQLException e) {
            System.out.println(e.getMessage());
        }
    }
}

我遇到的例外情况

  

org.postgresql.util.PSQLException:连接尝试失败。在   org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292)     在   org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)     在org.postgresql.jdbc.PgConnection。(PgConnection.java:211)在   org.postgresql.Driver.makeConnection(Driver.java:458)在   org.postgresql.Driver.connect(Driver.java:260)在   java.sql.DriverManager.getConnection(未知源),位于   java.sql.DriverManager.getConnection(未知源),位于   com.inno.demo.ConnectionJDBC.main(ConnectionJDBC.java:17)由以下原因引起:   java.net.SocketTimeoutException:连接在以下位置超时   java.net.DualStackPlainSocketImpl.waitForConnect(本机方法),位于   java.net.DualStackPlainSocketImpl.socketConnect(未知源)位于   java.net.AbstractPlainSocketImpl.doConnect(未知源),网址为   java.net.AbstractPlainSocketImpl.connectToAddress(未知源),位于   java.net.AbstractPlainSocketImpl.connect(未知源)在   java.net.PlainSocketImpl.connect(未知源)在   java.net.SocksSocketImpl.connect(未知源)在   java.net.Socket.connect(未知源)   org.postgresql.core.PGStream。(PGStream.java:75)在   org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)     在   org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)     ...还有7个

2 个答案:

答案 0 :(得分:1)

您应该分别传递用户名和密码,而不是作为URL的一部分:

public static void main(String[] args) {

    String url = "jdbc:postgresql://192.168.218.18:5432/v";
    String user = "****";
    String password = "*****";

    try (Connection con = DriverManager.getConnection(url, user, password);

        System.out.println("connection established");

    } catch (SQLException e) {

        System.out.println(e.getMessage());
    }
}

请参阅:http://zetcode.com/java/postgresql/

答案 1 :(得分:0)

自从ping IP 192.168.218.18(我将其称为target系统)以来,失败,请确认并确认以下其中一项:

  • 您的系统与target系统连接到同一网络(即专用网络)
  • 如果您有权访问target系统,请尝试从该系统ping您本地计算机的IP,并检查从该系统是否成功ping
  • 确保您/ target系统的防火墙配置为允许相互连接

如果您确认这些,我相信您至少会对出现问题的地方和问题有一个基本的了解。这样,您的连接问题就会得到解决。