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


錯誤原因:

    太多的連接數,登錄用戶過多,配置的mysql連接數過小,或者某些連接沒有關閉,導致連接數過大。

問題的解決:

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

    而項目實際上部署在linux系統上,需要找到my.cnf的配置文件,一般在etc/my.cnf,找到這個文件,添加如下行:

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

    set-variable=wait_timeout=200

 

之后重啟mysql,生效。

    net stop mysql

    net start mysql

    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中,這些語句一定會執行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM