当前位置: 首页 > 知识库问答 >
问题:

组织。postgresql。util。PSQLException:连接尝试失败

邢华清
2023-03-14

我正在使用java web服务(apache axis)和JDBC连接来连接postgres数据库,以获取数据。但突然间,在大多数情况下,我都遇到了org的一个例外。postgresql。util。PSQLException:连接尝试失败 有时它工作正常。这里我使用了许多事先准备好的陈述。我的示例代码是

Connection connection=null;
try
{
    Class.forName(driver);
    connection = DriverManager.getConnection(url, username, password);
    ps1=connection.prepareStatement("select * from emp");
    rs1=ps1.executeQuery();
    while(rs1.next())
    {            
        ps2=connection.prepareStatement("select * from dept where dept_no="+rs1.getInt("dept_no"));
        rs2=ps2.executeQuery();
        while(rs2.next())
        {
            ................
            ................
        }
    }
}
catch(Exception e)
{
    System.out.println("Exception occurred is"+e.getMessage());            
}
finally
{
    try{if(rs1!=null)rs1.close();}catch(Exception e){ System.out.println("*1closing error--->"+e);}
    try{if(ps1!=null)ps1.close();}catch(Exception e){ System.out.println("**1closing error--->"+e);}
    try{if(rs2!=null)rs2.close();}catch(Exception e){ System.out.println("*2closing error--->"+e);}
    try{if(ps2!=null)ps2.close();}catch(Exception e){ System.out.println("**2closing error--->"+e);}
    try{if(connection!=null)connection.close();}catch(Exception e){ System.out.println("***closing error--->"+e);}
}

有关此异常的堆栈跟踪是

org.postgresql.util.PSQLException: The connection attempt failed.
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:137)
    at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
    at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:124)
    at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
    at org.postgresql.jdbc3.Jdbc3Connection.<init>(Jdbc3Connection.java:24)
    at org.postgresql.Driver.makeConnection(Driver.java:386)
    at org.postgresql.Driver.connect(Driver.java:260)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.codon.service.WareHouseServer.get_picks(WareHouseServer.java:7415)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
    at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
    at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
    at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
    at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
    at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(Unknown Source)
    at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
    at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
    at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
    at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
    at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:254)
    at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:95)
    ... 37 more

我查看了postgres日志,在不同的情况下发现了以下语句

1.警告:工人启动时间过长;取消。

2.无法重新连接到共享内存(键=…,地址=…):487

3.无法从客户端接收数据:无法建立连接,因为目标计算机主动拒绝连接。

4.客户端连接出现意外EOF。

请帮帮我提前谢谢


共有3个答案

莫英喆
2023-03-14

为我修正了:

跳到pg_hba上。conf文件,并在IPV4连接下更改其127。xxxx0.0.0.0/0

仔细检查:跳到postgresql。conf并将列表更改为*(我确信您知道需要先删除开头的#,才能使其生效)

祝你好运

骆文彬
2023-03-14

试试chekin Postgresql版本,在我的例子中,我使用以下配置部署了我的应用程序:

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>42.2.16</version>
    </dependency>

但在本地,我使用了42.2.18,运行良好,所以在检查版本后我不知道,所以你可能应该尝试其他版本。

厍兴腾
2023-03-14

真正的问题是:

Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read

当Java试图读取连接时,连接已关闭。这可能是由以下原因引起的:

  • 正在重新启动PostgreSQL server
  • 您连接到的PostgreSQL后端将被终止
  • 您连接到的PostgreSQL后端崩溃
  • 不可靠的网络连接
  • 行为不端的有状态防火墙
  • NAT防火墙/路由器NAT连接表的空闲连接超时

... 可能更多。查看PostgreSQL server日志,查看是否有任何信息;还考虑用WiReSARK这样的工具进行一些网络跟踪。

 类似资料:
  • 由于一些奇怪的原因,hibernate生成的查询不适用于postgres,它告诉它无法找到关系/表,即使在架构中有有效的表?这个答案没有帮助。 例外情况: HQL公司 生成SQL 此查询工作正常: 基于胶片实体注释的映射: 解决方案/黑客: 评论后,问题消失了。

  • 我有一个使用spring boot和postgres的应用程序。我在尝试创建用户时遇到此错误。 当我在我的数据库上运行此查询时,我得到相同的错误: 但如果我将其更改为: 它起作用了。 如何在我的spring boot应用程序上配置它? pom中的依赖项。xml: application.properties: 我的实体: 我从表单中调用此操作: 这是我的控制器: 记录错误的验证器: UserSer

  • 我正在尝试使用Postgres数据库创建Hikari连接池。Hikari版本是3.4。1和postgres驱动程序版本为42.2。5. 我的连接属性如下。 mdb.hcp.driverClassName=org.postgresql.驱动程序 mdb。hcp。用户名=user1 mdb.hcp.jdbcUrl=jdbc:postgresql://localhost:2001/db1?ssl=fal

  • 我得到了这个例外 在下面的方法中,身份验证是使用ldap完成的。如果发生不正确的用户名或密码或连接异常,将捕获以下异常之一。 我的问题是这个。我将异常发送到下面的方法,并将异常转换为String并将其添加到我的实体类中。 这是我的实体类: 但是当操作发生时,我得到以下异常。 我研究了一些东西,上面说是这样的。 但我不明白的是,我在这里得到的值是空的?我知道在调试时,Entity类会将异常消息放在l

  • 目标是使用hibernate将json文本保存到数据库中。 <代码>用户。java books.java:

  • 我试图添加一个连接。 jdbc:oracle:thin:@localhost:1521: xe 因为某种原因它不起作用。错误如下 JAVAsql。SQLException:Listener拒绝了连接,出现以下错误:ORA-12505,TNS:Listener当前不知道连接描述符中给出的SID 原因:甲骨文。网纳什。NetException:侦听器拒绝连接,出现以下错误:ORA-12505,TNS: