MySQL數(shù)據(jù)庫 Too many connections
在郊區(qū)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè),郊區(qū)網(wǎng)站建設(shè)費(fèi)用合理。
出現(xiàn)這種錯(cuò)誤明顯就是 mysql_connect 之后忘記 mysql_close;
當(dāng)大量的connect之后,就會(huì)出現(xiàn)Too many connections的錯(cuò)誤,mysql默認(rèn)的連接為100個(gè),而什么情況下會(huì)出現(xiàn)這種錯(cuò)誤呢?
正常的mysql_connect 之后調(diào)用 mysql_close()關(guān)閉連接
但在連接錯(cuò)誤時(shí),會(huì)者mysql_real_query()出現(xiàn)錯(cuò)誤退出時(shí),可能忘記mysql_close();
所以在程序return 之前一定要判斷是否close(),最穩(wěn)妥的方法就是在寫任何函數(shù)時(shí)都只有一個(gè)出口!
還有可以通過修改mysql配置文件來加大允許連接的數(shù)量!
有時(shí)你的服務(wù)器是經(jīng)常出現(xiàn)這樣的錯(cuò)誤呢:
錯(cuò)誤信息如下:
Can not connect to MySQL server
Error: Too many connections
Errno.: 1040
Similar error report has beed dispatched to administrator before.
從官方文檔知道Linux上面編譯安裝的mysql默認(rèn)的連接為100個(gè)
文檔:
mysql官方告訴我們需要修改max_connections的值,那么我們?cè)趺慈バ薷哪兀坑袃煞N方法
1、修改配置文件文件
修改/etc/my.cnf這個(gè)文件,在[mysqld] 中新增max_connections=N,如果你沒有這個(gè)文件請(qǐng)從編譯源碼中的support-files文件夾中復(fù)制你所需要的*.cnf文件為到 /etc/my.cnf。我使用的是my-medium.cnf,中型服務(wù)器配置。例如我的[mysqld]的內(nèi)容如下
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-locking
key_buffer = 160M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
max_connections=1000
由于對(duì)mysql還不是很熟悉,所以很多參數(shù)沒有修改。哈哈。。
2、非使用mysqld腳本自動(dòng)啟動(dòng)的用戶。
修改MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′
MYSQLHOME/bin/mysqldsafe文件例如:/usr/local/mysql/bin/mysqldsafe這個(gè)文件grep?n‘maxconnection′MYSQL_HOME/bin/mysqld_safe
修改對(duì)應(yīng)行號(hào)的max_connections參數(shù)值
3、服務(wù)器登錄mysql : mysql -u root -p
百分之九十進(jìn)不去,進(jìn)不去的執(zhí)行重啟命令 :/etc/init.d/mysql restart(centos系統(tǒng))
此時(shí)重啟mysql就能連接mysql了,如果還有時(shí)間,可以繼續(xù)下一步,治病要治本
打開配置文件 添加一下配置 vi /etc/my.cnf
wait_timeout = 600
interactive_timeout = 600
再次重啟mysql即可
原理解答
mysql 默認(rèn)100 連接數(shù),超過則連不上,實(shí)際工作的連接數(shù)遠(yuǎn)遠(yuǎn)沒有100,大部分在sleep
所以要么增大連接數(shù),要么殺掉無用連接,推薦后者。
1、修改安裝文件根目錄下的my.ini文件:\x0d\x0a搜索字段default-character-set,設(shè)置其值為utf8/gbk之一(注意設(shè)置utf8的時(shí)候不能設(shè)成utf-8)\x0d\x0a再去重啟MySQL服務(wù)器\x0d\x0a如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作\x0d\x0a2、修改數(shù)據(jù)庫編碼\x0d\x0a在安裝目錄的data目錄下找到你出現(xiàn)亂碼的數(shù)據(jù)庫對(duì)應(yīng)的文件夾(這個(gè)文件夾即是你這個(gè)數(shù)據(jù)庫存放數(shù)據(jù)的地方),\x0d\x0a進(jìn)入找到db.opt文件(即此數(shù)據(jù)庫的編碼配置文件),修改值為下面的\x0d\x0adefault-character-set=gbk\x0d\x0adefault-collation=gbk_chinese_ci\x0d\x0a再去重啟MySQL服務(wù)器\x0d\x0a如果還是出現(xiàn)亂碼,接著執(zhí)行下面操作\x0d\x0a3、再不行,備份原數(shù)據(jù)庫數(shù)據(jù),直接drop掉這個(gè)數(shù)據(jù)庫\x0d\x0a重新創(chuàng)建數(shù)據(jù)庫并設(shè)置編碼\x0d\x0acreate database yourDB character set gbk;\x0d\x0a別忘了重啟MySQL服務(wù)器綜上:如果還沒有解決,我也沒轍了。重裝吧,重裝的時(shí)候設(shè)置下編碼三處的編碼要一致
1、情況一:MySQL的錯(cuò)誤日志文件(安裝目錄\MYOA\data5\機(jī)器名.err)會(huì)記錄如下內(nèi)容:
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Error: trying to add tablespace 460 of name '.\td_oa\flow_data_35.ibd'
InnoDB: to the tablespace memory cache, but tablespace
InnoDB: 460 of name '.\td_oa\exam_data.ibd' already exists in the tablespace
解決方法:
1)剪切出安裝目錄\MYOA\data5\TD_OA的flow_data_35.ibd和flow_data_35.frm兩個(gè)文件;
2)啟動(dòng)MySQL5_OA服務(wù),使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫中。如果提示flow_data_35表已經(jīng)存在不能導(dǎo)入,則繼續(xù)按后續(xù)步驟執(zhí)行;
3)在data5下手動(dòng)建立tmp目錄;
4)使用MySQL管理工具或MySQL命令行程序在tmp下建立名稱為flow_data_35的表(包含一個(gè)字段即可);
5)將tmp下的flow_data_35.frm和flow_data_35.ibd拷貝到安裝目錄\MYOA\data5\TD_OA目錄下;
6)在MySQL管理工具或MySQL命令行程序中,進(jìn)入TD_OA庫,使用“drop table flow_data_35;”命令清除公共表空間中殘留的flow_data_35表的相關(guān)信息;
7)進(jìn)入tmp庫,刪掉flow_data_35表;
8)使用備份的flow_data_35.sql導(dǎo)入到TD_OA庫中;
9)如果還有其他表存在該問題,可重復(fù)執(zhí)行4至8步驟。
2、情況二:MySQL的錯(cuò)誤日志文件(安裝目錄\MYOA\data5\機(jī)器名.err)會(huì)記錄如下內(nèi)容:
130409 15:54:31 [Note] Plugin 'FEDERATED' is disabled.
130409 15:54:31 InnoDB: The InnoDB memory heap is disabled
130409 15:54:31 InnoDB: Mutexes and rw_locks use Windows interlocked functions
130409 15:54:31 InnoDB: Compressed tables use zlib 1.2.3
130409 15:54:32 InnoDB: Initializing buffer pool, size = 1023.0M
InnoDB: VirtualAlloc(1086849024 bytes) failed; Windows error 8
130409 15:54:32 InnoDB: Completed initialization of buffer pool
130409 15:54:32 InnoDB: Fatal error: cannot allocate memory for the buffer pool
130409 15:54:32 [ERROR] Plugin 'InnoDB' init function returned error.
130409 15:54:32 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
130409 15:54:32 [ERROR] Unknown/unsupported storage engine: Innodb
130409 15:54:32 [ERROR] Aborting
解決方法:
此情況出現(xiàn)的原因是myoa\mysql5\my.ini中innodb_buffer_pool_size的值太大,OA服務(wù)器操作系統(tǒng)不支持所致。改小后再啟動(dòng)mysql5_OA服務(wù)即可,一般保持和數(shù)據(jù)庫大小一致。數(shù)據(jù)庫大小即是myoa/data5的大小。
3、情況三:mysql服務(wù)啟動(dòng)不了,事件查看器中顯示:The syntax
'--log-slow-queries' is deprecated and will be removed in a future
release. Please use '--slow-query-log'/'--slow-query-log-file' instead.
解決方法:安裝目錄\MYOA\data5下的ibdata1、ib_logfile0、ib_logfile1文件屬性被設(shè)置為只讀導(dǎo)致,取消只讀控制,重啟mysql5_OA服務(wù)即可。
4、情況四:MySQL的錯(cuò)誤日志文件(data5\機(jī)器名.err)會(huì)記錄如下內(nèi)容:InnoDB: No valid checkpoint found.
解決方法:此問題找不到檢查點(diǎn),數(shù)據(jù)庫是無效的,此種情況,只能用熱備份數(shù)據(jù)恢復(fù)。
5、以上四種情況,是2013版OA系統(tǒng)目前比較常見的mysql服務(wù)啟動(dòng)不了的現(xiàn)象和解決辦法,大家可作參考,其他情況的話,再具體分析處理。
6、分析思路總結(jié):遇到mysql5_OA服務(wù)啟動(dòng)不了的情況,首先查看myoa\data5下的錯(cuò)誤日志文件,根據(jù)日志中的具體內(nèi)容進(jìn)行具體分析。
7、2013版MYSQL服務(wù)啟動(dòng)不了(可以嘗試強(qiáng)制啟動(dòng)mysql服務(wù))方法如下:
1)打開\MYOA\mysql5\my.ini,去掉innodb_force_recovery=1前邊的注釋。
2)啟動(dòng)MySQL5_OA服務(wù),此時(shí)MySQL處于只讀狀態(tài),可以導(dǎo)出,不可寫入。如果仍不能啟動(dòng),可以嘗試將innodb_force_recovery修改為2、3、4、5、6等,直到可以啟動(dòng)為止。
3)使用MySQL管理工具,將TD_OA等相關(guān)的數(shù)據(jù)庫導(dǎo)出為SQL文件。
4)停止MySQL5_OA服務(wù),刪除TD_OA下的所有文件、ibdata1、ib_logfile0、ib_logfile1等文件。
5)打開\MYOA\mysql5\my.ini,在innodb_force_recovery=1前邊加上#號(hào),將該項(xiàng)注釋掉。
6)啟動(dòng)MySQL5_OA服務(wù),然后導(dǎo)入此前備份的SQL文件。
7)檢查數(shù)據(jù)庫,將無法通過該方法恢復(fù)的數(shù)據(jù)表,通過之前自動(dòng)備份的SQL文件進(jìn)行恢復(fù)。
環(huán)境:
MySQL5.6社區(qū)版本
操作系統(tǒng):CentOS6.3
問題:
執(zhí)行安裝命令
然后安裝到中途報(bào)如下類似錯(cuò)誤:
原因:
這是由于包沖突引起的。
解決方法:
先移除沖突的libs包,再進(jìn)行安裝即可。
移除mysql-libs-5.1的包
第四步驟:重新執(zhí)行安裝腳本
安裝成功之后:初始化mysql數(shù)據(jù)庫
設(shè)置用戶名和密碼:
網(wǎng)站題目:mysql問題怎么解決 mysql遇到的問題及解決辦法
鏈接分享:http://www.2m8n56k.cn/article6/doggiog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、面包屑導(dǎo)航、微信小程序、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)