Data source rejected establishment of connection, message from server: "Too many connections"

錯誤緣由:mysql

    太多的鏈接數,登陸用戶過多,配置的mysql鏈接數太小,或者某些鏈接沒有關閉,致使鏈接數過大。linux

問題的解決:sql

    修改mysql的my.ini配置文件,網上的說法:mysql安裝目錄下的my.ini中設定的併發鏈接數太少或者系統繁忙致使鏈接數被佔滿。併發

    而項目實際上部署在linux系統上,須要找到my.cnf的配置文件,通常在etc/my.cnf,找到這個文件,添加以下行:大數據

    set-variable=max_connections=1000
    set-variable=max_user_connections=500spa

    set-variable=wait_timeout=200ci

 

以後重啓mysql,生效。資源

    net stop mysql部署

    net start mysqlget

    max_connections: 爲設置最大的鏈接數

    max_user_connections:設置每用戶最大的 鏈接數500

    wait_timeout:表示200秒後將關閉空閒鏈接,但對正在工做的鏈接不受影響。

 

    //從新啓動MySQL後使用下面的命令查看修改是否成功

    # mysqladmin -uroot -p variables

    Password:

    //能夠看到如下項說明修改爲功

    | max_connections                 | 1000

    | max_user_connections            | 500

    | wait_timeout                    | 200

解決方法二:

還有一個可能就是代碼裏打開了太多的鏈接,可是忘記了在finally塊裏面關閉,從而致使在處理大數據的時候,拋出異常。下面這樣的代碼就不會有異常了。

try{			
   conn=Good.getConnection();     stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE  , ResultSet.CONCUR_UPDATABLE);  String sql1="insert into cat_garbage values('"+rs.getInt("id")+"','"+rs.getInt("cid")+"','"+rs.getString("name")+"','"+rs.getString("keyword")+"')";   stmt.executeUpdate(sql1);   }   catch(SQLException|ClassNotFoundException|IOException e)   {    e.printStackTrace();   }   finally   {    if(stmt!= null)     stmt.close();    if(conn!= null)     conn.close();   }
要隨時記住關閉rs,stmt,conn等資源,學會使用finally,在finally中,這些語句必定會執行
相關文章
相關標籤/搜索