【发布时间】:2023-03-30 00:05:01
【问题描述】:
我在将数据插入数据库的查询中遇到异常,我在数据库中插入了大约 15k 行的大量数据。 这是异常消息:
The driver was unable to create a connection due to an inability to establish the client portion of a socket.This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable.
我的插入查询函数:
public static void insertObject(int modelId,float x,float y,float z,float rx,float ry,float rz){
try
{
con = DriverManager.getConnection(url, user, password);
String query = " insert into wastobjects (modelid,x,y,z,rx,ry,rz)"
+ " values (?, ?, ?, ?, ?, ?, ?)";
PreparedStatement preparedStmt = con.prepareStatement(query);
preparedStmt.setInt (1, modelId);
preparedStmt.setFloat (2, x);
preparedStmt.setFloat (3, y);
preparedStmt.setFloat (4, z);
preparedStmt.setFloat (5, rx);
preparedStmt.setFloat (6, ry);
preparedStmt.setFloat (7, rz);
preparedStmt.execute();
con.close();
}
catch (Exception e)
{
System.err.println("Got an exception!");
System.err.println(e.getMessage());
}
}
【问题讨论】:
-
您的套接字连接用完了。您正在为每一行创建一个新连接。您应该重用您的连接,或者您可以使用操作系统命令打开更多套接字。查找最大套接字连接数。你应该知道,每个socket连接都会创建一个小文件,所以会有资源限制,但是如果你增加数量,你可以创建很多连接。
-
发布完整的堆栈跟踪
-
我每次都很难创建一个新的连接是个坏主意,有没有我可以重复使用相同的连接?