java - Java 中的 "Too Many Connections"错误(MYSQLNonTransientConnectionException)

标签 java mysql jdbc

我想将本地驱动器的每个文件名插入到 mysql 数据库中。

当我执行这段代码时,它完美地开始了。

读取文件名目录的代码:

public void main(String[] args)throws IOException {
    JOptionPane.showMessageDialog(null, "IT MAY TAKE SOMETIME TO LOAD \n PLEASE WAIT FOR CLOSING POPUP!!");
    String s="D:\\";

    Path startingDir = Paths.get(s);        
    String pattern="*";
    Finder finder = new Finder(pattern);
    Files.walkFileTree(startingDir, finder);

    JOptionPane.showMessageDialog(null,"close\n NOW PLEASE CLICK\nSEARCH MY FILE! BUTTON");

这是将结果插入数据库的代码:

public void find(Path file) {

Path name = file.getFileName();
String st = file.toString();
if (name != null && matcher.matches(name)) {
    try {

        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost/login","root","");
        conn.createStatement();
        String query =" INSERT INTO `search`(`path`) VALUES (?)";
        PreparedStatement pst=conn.prepareStatement(query);
        pst.setString(1,st );
        pst.execute();

        //myst.executeUpdate(query);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        JOptionPane.showMessageDialog(null, e);
    }

一段时间后,脚本因这个异常而停止

com.mysql.jdbc.exception.jdbc4.MYSQLNonTransientConnectionException:
Data source rejected establishment of connection,
message from server:"Too Many connections"

有什么办法可以解决这个问题吗?

最佳答案

对于每个插入,您都会创建一个新连接。如果你继续这样做,它们就会累积起来,最终你会耗尽与数据库的连接。这个限制可能很小,例如20.

你也可以

  • 关闭您已使用的资源。这意味着关闭 PreparedStatementConnection
  • 或更高效地创建一个 Connection 和一个 PrepareStatement ever 并重用它们。节省了创建和清理资源的成本,这可能很昂贵(除非驱动程序为您进行回收)

关于java - Java 中的 "Too Many Connections"错误(MYSQLNonTransientConnectionException),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30011247/

相关文章:

java - 读取对象方法

java - Eclipse:在文本编辑器中使用UTF-8编码使字符串无法正常工作,我该如何解决这个问题?

java - 并排显示星号正方形,实心和空心

java - JDBC - 无法使用服务名称连接到 Oracle

java - MySQLSyntaxError 插入 MySQL 数据库

java - 如何避免从finally block 中抛出异常

MySQL JOIN 两次查找

asp.net - MySQL-使用未知值插入

mysql - 使用node.js在MySql中批量插入

java - SQL Server 2014 的 JDBC 驱动程序