【发布时间】:2014-07-27 07:32:37
【问题描述】:
在一个只有 jdbc 和 mysql 的简单 java 应用程序中,我得到了错误:
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connections"
线程用于打开和关闭与 Mysql 的连接
我尝试增加 MySQL 的 max_connection 变量,但它只会延迟异常,因为如果增加线程数,它会再次出现
请提供根本原因和解决方案。
import java.sql.DriverManager;
import java.sql.SQLException;
public class Connection1 extends Thread{
public java.sql.Connection con = null;
public Connection1() throws ClassNotFoundException, SQLException {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
for(int i=0;i<500;i++) {
new Thread(new Connection1().new StartTester(i)).start();
}
}
public void looper() throws ClassNotFoundException, SQLException {
for(int i=0;i<2;i++) {
new Thread(this.new StartTester(i)).start();
}
}
public void connect() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","esignal");
System.out.println("con success "+con);
con.close();
System.out.println("con Closed "+con);
}
class StartTester implements Runnable {
public StartTester(int count) {
System.out.println("Thread count "+count);
}
@Override
public void run() {
try {
connect();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
【问题讨论】:
-
在问题中加入一些代码可能会解决问题
-
尝试使用一些数据库池,例如apache dbcp
-
发布代码sn-p。
-
看看this页面。
-
请看下面的代码: