1. 程式人生 > >MySQL中查詢時"Lost connection to MySQL server during query"報錯的解決方案

MySQL中查詢時"Lost connection to MySQL server during query"報錯的解決方案

解決 lose tool 查詢 不用 resolv 原因 網上 技術

一、問題描述:

mysql數據庫查詢時,遇到下面的報錯信息:

技術分享圖片

二、原因分析:

dw_user 表數據量比較大,直接查詢速度慢,容易"卡死",導致數據庫自動連接超時....

三、解決辦法:

方案1.在mysql配置文件[myslqd]下面添加一行設置skip-name-resolve.需要重啟mysql服務.

方案2.在hosts文件內添加: ip與主機名的映射關系[這種方式不用重啟]

如: 在hosts文件中添加:

127.0.0.1 localhost  

其他網上的方法:

1. 代碼層面,你需要在自己的PHP數據庫連接處增加大致如下代碼。

if(   in_array(mysql_errno
(), array(2006, 2013))){ mysql_close(); mysql_connect(...); mysql_query(...); }

也就是說遇到2006,2013錯誤就重新連接一下MySQL。
2. MySQL層面,需要配置一些參數 my.cnf (但是這裏是linux下,我的windows配置怎麽辦?)

wait_timeout = x 超時時間  如600秒  

max_allowed_packet = y 最大允許數據量  

適當增加x,y的值。

3. 一般出現這種情況不是所有例句而是單個表,請你先修復表一般都能解決這類問題。

MySQL Error 2013: Lost connection to MySQL server during query  

錯誤代碼: 1153 - Got a packet bigger than max_allowed_packet bytes   

解決方法:  

修改mysql.ini(網上都說是這個文件,找了N久終於知道在哪裏了,我的目錄是在 D:\MySQL_Data\MySQL Server 5.5 在MySQL_Data文件夾下)文件添加如下代碼即可  

max_allowed_packet=500M  

如果不可以的話就修改D:\MySQL\MySQL Server 
5.5\my-huge.ini 裏的max_allowed_packet=16M 把16改為500 我是根據此方法做的,試試


4. 可以直接在mysql中設置:

#show variables like %timeout%;  
#show variables like max_allowed_packet  

set global wait_timeout=60000;  

#set global max_allowed_packet = 2*1024*1024  

MySQL中查詢時"Lost connection to MySQL server during query"報錯的解決方案