Java 引发异常[com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:
在我的java web应用程序中,我连接到一个本地MySQL数据库。使用servlet我获取一个csv文件并将数据插入数据库。它连接良好并插入数据,但每次插入csv文件后,它开始逐渐变慢。当它到达csv文件中大约第159行时,它抛出此异常: 抛出异常 [com.mysql.jdbc.CommunicationsException:通信链路故障 由于潜在异常: java.net.SocketException 消息:权限被拒绝:连接 堆栈跟踪: java.net.SocketException:权限被拒绝:连接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:权
有人知道为什么它工作正常,然后慢下来直到抛出这个异常吗?我真的很挠头,网上似乎没有任何帮助。顺便说一句,我使用的是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(),它们为什么不关闭?