Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 引发异常[com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:_Java_Mysql_Csv_Jdbc_Tomcat8 - Fatal编程技术网

Java 引发异常[com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:

Java 引发异常[com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:,java,mysql,csv,jdbc,tomcat8,Java,Mysql,Csv,Jdbc,Tomcat8,在我的java web应用程序中,我连接到一个本地MySQL数据库。使用servlet我获取一个csv文件并将数据插入数据库。它连接良好并插入数据,但每次插入csv文件后,它开始逐渐变慢。当它到达csv文件中大约第159行时,它抛出此异常: 抛出异常 [com.mysql.jdbc.CommunicationsException:通信链路故障 由于潜在异常: java.net.SocketException 消息:权限被拒绝:连接 堆栈跟踪: java.net.SocketException:权

在我的java web应用程序中,我连接到一个本地MySQL数据库。使用servlet我获取一个csv文件并将数据插入数据库。它连接良好并插入数据,但每次插入csv文件后,它开始逐渐变慢。当它到达csv文件中大约第159行时,它抛出此异常:

抛出异常

[com.mysql.jdbc.CommunicationsException:通信链路故障 由于潜在异常:

java.net.SocketException 消息:权限被拒绝:连接

堆栈跟踪:

java.net.SocketException:权限被拒绝:连接


有人知道为什么它工作正常,然后慢下来直到抛出这个异常吗?我真的很挠头,网上似乎没有任何帮助。顺便说一句,我使用的是tomcat8。

因为你已经发现,你得到的异常是因为你打开了太多的连接,限制被重新设置了疼痛

要正确关闭与db的连接,基本上有三个步骤

  • 关闭结果集(如果有)
  • 关闭语句对象
  • 紧密连接对象
  • 典型代码如下所示:

    try {
        //your code that is making and using jdbc is here
    
        //after you finish
        rs.close(); //if a ResultSet was returned
        stmt.close(); //Close Statement
        conn.close(); //Close Connection
    }catch(SQLException se){
    }catch(Exception e){
    }finally{
        //finally block used to close resources if Closing failed above
        try{
           if(stmt!=null)
              stmt.close();
        }catch(SQLException se2){
        }// nothing we can do
        try{
           if(conn!=null)
              conn.close();
        }catch(SQLException se){
           se.printStackTrace();
        }//end finally try
    }//end try
    

    有关完整的示例,请参见

    您是在使用连接、关闭连接还是只是让连接留在记忆中我认为@ScaryWombat是正确的,请尝试重新启动MySQL。如果这解决了问题,那么您可能存在连接池问题。我想您是对的,当我运行e程序,它们似乎没有关闭。我在插入后调用connection.close(),但这似乎没有关闭连接。如果我调用connection.close(),它们为什么不关闭?