在mysql中,系统变量“max\u connections”的值为100。但我正试图通过在jdbc连接字符串中传递键值对以编程方式重写这个值jdbc:mysql://localhost/test?maxconnections=3”。但它似乎没有反映出任何变化。下面我将maxconnection设置为3,但在下面的示例中,我仍然能够创建40个连接。注意,我并不是故意在每次迭代中关闭连接的。只是为了看看jdbc连接字符串中添加的键值是否生效。如果生效,则应该给出“too many connections”例外
参考代码如下:
public class JDBCOne {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
for(int i=1;i<=35;i++)
{
Connection conn = null;
Statement stmt = null;
Class.forName("com.mysql.jdbc.Driver");
System.out.println("Connecting to database...:"+i);
conn = DriverManager.getConnection("jdbc:mysql://localhost/test?maxConnections=3", "root", "root");
stmt = conn.createStatement();
Integer id = null;
String name = null;
Double amount = null;
String sql = "SELECT * FROM emp where id=1";
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()) {
id = rs.getInt("id");
name = rs.getString("name");
amount = rs.getDouble("amount");
}
System.out.println("id-" + id);
}
System.out.println("Goodbye!");
}
}
3条答案
按热度按时间93ze6v8z1#
我不能肯定,但有可能
com.mysql.jdbc.Driver
当conn和/或stmt超出范围时,正在关闭某些连接。你可以试着把它们放在外面
for
回路:您可以通过运行以下mysql命令来验证连接是否保持打开状态:
to94eoyn2#
你可以用
set global max_connections = 200;
如果你有SUPER
特权。例如。:
vc9ivgsu3#
max_connections
是一个全局mysql服务器变量,用于控制服务器从连接到它的所有程序接受的连接数。不过,它不是配置字符串参数。所以,如果你试图用一个连接字符串来改变它,你不能这样做™.
看看这个。https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html