解決mysql報錯:Data?source?rejected?establishment?of?connection,?message?from?server:?\"Too?many?connectio
最近在做壓力測試嘛,需要逐步增加用戶量做驗(yàn)證,每個用戶單獨(dú)創(chuàng)建數(shù)據(jù)庫進(jìn)行連接,就要不斷去創(chuàng)建數(shù)據(jù)庫,這個報錯也很容易理解,mysql連接數(shù)不夠用了
報錯
報錯信息如下:
"SQLState":"08004","vendorCode":1040,"detailMessage":
"Data source rejected establishment of connection,message from server: \"Too many connections\""
原因
根本原因是mysql連接數(shù)不夠用了
但也要分情況看為什么不夠用了
1.是mysql的max_connections屬性配置太小?
2.還是是多次insert,update操作沒有關(guān)閉session?
如果你也不確定,就繼續(xù)往下看
解決
我們要知道,mysql版本的不同,可設(shè)置的最大連接數(shù)范圍也是有所區(qū)別的:
Mysql5.5~5.7:默認(rèn)的最大連接數(shù)都是151,上限為:100000
Mysql5.0版本:默認(rèn)的最大連接數(shù)為100,上限為16384
查看mysql版本
select version();
如下,我這里是基于mysql 5.7,那么默認(rèn)的最大連接數(shù)應(yīng)該是151

查看當(dāng)前mysql最大連接數(shù)限制
show variables like 'max_connections';

當(dāng)前最大連接數(shù)限制是151,說明沒有改過最大連接數(shù)限制
確定連接數(shù)不夠原因
如上所示,我的情況當(dāng)前是最大連接數(shù)限制是151,在此之前依然創(chuàng)建過十幾個數(shù)據(jù)庫;同時我又再次自行檢查過,我這里不存在未關(guān)閉session的操作
所以原因是max_connections屬性配置太小
修改最大連接數(shù)
修改mysql客戶端最大連接數(shù)可以通過兩種方式:
一種是使用命令設(shè)置,另一種是直接修改my.cnf文件
命令設(shè)置
使用命令設(shè)置這種方式是臨時修改,只能治標(biāo)不能治本,在這個mysql服務(wù)不重啟的條件下是可用的,若mysql重啟會恢復(fù)到mysql默認(rèn)的連接數(shù)(或者恢復(fù)到my.cnf文件中配置的最大連接數(shù))。
但由于我是在測試,無所謂,mysql重啟后的連接數(shù)
set global max_connections=1500;

修改my.cnf文件
mysql重啟后會優(yōu)先使用my.cnf配置文件中的配置,用上面命令設(shè)置后,若重啟mysql服務(wù),則還是會回到my.cnf文件中配置的最大連接數(shù)(或者默認(rèn)值)。
# 修改my.cnf文件,在文件中加入如下屬性 max_connections=1500 # 然后重啟mysql服務(wù) $ service mysqld restart
再次去創(chuàng)建數(shù)據(jù)庫連接,就沒問題了!
總結(jié)
到此這篇關(guān)于解決mysql報錯:Data source rejected establishment of connection, message from server: \"Too many connectio的文章就介紹到這了,更多相關(guān)mysql報錯連接數(shù)不夠用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL CTE (Common Table Expressions)示例全解析
- MySQL CTE 通用表達(dá)式詳解
- 如何使用 Spring Boot 3.3 和 JdbcTemplate 操作 MySQL 數(shù)據(jù)庫
- MySQL中使用CTE獲取時間段數(shù)據(jù)的技巧分享
- MySQL數(shù)據(jù)庫中遇到no?database?selected問題解決辦法
- Mysql8公用表表達(dá)式CTE詳解
- MySQL8.0之CTE(公用表表達(dá)式)的使用
- MySQL數(shù)據(jù)庫之字符集?character
- mysql8 公用表表達(dá)式CTE的使用方法實(shí)例分析
- MySQL中普通CTE和遞歸CTE的順序問題小結(jié)
相關(guān)文章
MySQL使用觸發(fā)器實(shí)現(xiàn)數(shù)據(jù)自動更新的應(yīng)用實(shí)例
觸發(fā)器是非常常見的自動化數(shù)據(jù)庫操作方式,無論是在數(shù)據(jù)更新、刪除還是需要自動添加一些內(nèi)容到數(shù)據(jù)表上,觸發(fā)器都可以發(fā)揮作用,熟悉 SQL 的基本語法和一些常見的用例,可以幫助你合理地設(shè)置自己的數(shù)據(jù)庫操作流程,2024-01-01
解決bash: mysql: command not found 的方法
解決bash: mysql: command not found 的方法,需要的朋友可以參考一下2013-03-03
MySQL MHA 運(yùn)行狀態(tài)監(jiān)控介紹
這篇文章主要介紹MySQL MHA 運(yùn)行狀態(tài)監(jiān)控,MHA(Master HA)是一款開源的 MySQL 的高可用程序,它為 MySQL 主從復(fù)制架構(gòu)提供了 automating master failover 功能,想具體了解的小伙伴可以和小編一起學(xué)習(xí)下面文章內(nèi)容2021-10-10
MySQL內(nèi)存及虛擬內(nèi)存優(yōu)化設(shè)置參數(shù)
這篇文章主要介紹了MySQL內(nèi)存及虛擬內(nèi)存優(yōu)化設(shè)置參數(shù),需要的朋友可以參考下2016-05-05
MySQL將版本由5.7.37更新到5.7.39的實(shí)現(xiàn)方式
這篇文章主要介紹了MySQL將版本由5.7.37更新到5.7.39的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用
這篇文章主要介紹了MySQL中LAG()函數(shù)和LEAD()函數(shù)的使用,包括窗口函數(shù)的基本用法,LAG()和LEAD()函數(shù)介紹,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08

