如果我們單看mysql提示MySQL server has gone away就是由于種種原因?qū)е耺ysql當(dāng)機(jī)了,導(dǎo)致MySQL server has gone away的原因有很多種,下面我來(lái)總結(jié)一下.
我自己人的經(jīng)歷:先簡(jiǎn)單介紹一下這個(gè)新手卡錄入后臺(tái),這個(gè)后臺(tái)是提供給產(chǎn)品人員使用,可以向某個(gè)游戲的某個(gè)特定分區(qū)批量錄入新手卡信息,方便玩家獲取,后臺(tái)設(shè)置的一次性最大錄入量為500.
先看日志吧,報(bào)錯(cuò)的內(nèi)容和日志的相同:
Error: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
這個(gè)錯(cuò)誤信息很好的描述了是數(shù)據(jù)庫(kù)超時(shí)引起的,以前聽前輩說(shuō)過(guò),應(yīng)該是wait_timeout環(huán)境變量設(shè)置的有問(wèn)題,可是查看后,發(fā)現(xiàn)wait_timeout設(shè)的好高啊,為28800,不應(yīng)該出問(wèn)題啊,無(wú)解.
回來(lái)后,訴說(shuō),頭笑而不語(yǔ),讓我只看,別說(shuō)話,代碼如下:
show?global?variables; --phpfensi.com
set?global?wait_timeout?=?120;?
總結(jié)解決了,但很多MySQL server has gone away都與此問(wèn)題無(wú)關(guān)了,都有和max_allowed_packet有關(guān)了,導(dǎo)入數(shù)據(jù)庫(kù)的時(shí)候 SQLyog 報(bào)錯(cuò)了.
Error Code: 2006 – MySQL server has gone away
搜了下,說(shuō)是max_allowed_packet,MySQL的一個(gè)參數(shù),設(shè)置的值不夠大,那我改下就行了 嘿嘿.
In?Windows:?
In?the?MySQL?server?installation?directory,?
in?my.ini?file,?add?the?following?line?under?[mysqld]?in?SERVER?SECTION.?
max_allowed_packet?=?16M?
In?Linux:?
Copy?the?my-xxx.cnf?file?from?/usr/share/mysql?to?/etc?as?my.cnf?
xxx?can?be?small,?medium,?large,?huge?…?depending?on?the?requirement.?
--代碼如下?
$?cp?/usr/share/mysql/my-xxx.cnf?/etc/my.cnf?
In?the?my.cnf?file,?change?the?default?
max_allowed_packet?=?1M?
to?
max_allowed_packet?=?16M?
Save?the?file?and?restart?MySQL?server.?
今天導(dǎo)入.sql文件時(shí)出現(xiàn)了Error Code:2006 – MySQL server has gone away錯(cuò)誤,原來(lái)是導(dǎo)入的sql文件大于系統(tǒng)默認(rèn)的max_allowed_packet的值,查了很多修改配置文件的,但是沒有找到my.cfg文件,修改其他文件不管用,所以直接使用sql語(yǔ)句來(lái)修改,代碼如下:
SET GLOBAL ?max_allowed_packet=67108864;
就可以了,不是max_allowed_packet越大越好,大家可根據(jù)自己人情況來(lái)設(shè)置.