<div id="cnblogs_post_body" class="blogpost-body"><p>原因: 在查詢Mysql中的數據庫,或者修改比較大的表的時候就會出現這種狀況;<br>google之:<br>方案1.在mysql配置文件[myslqd]下面添加一行設置skip-name-resolve.須要重啓mysql服務.<br> <br>方案2.在hosts文件內添加: ip與主機名的映射關係,如: 127.0.0.1 localhost. 這種方式不用重啓mysql服務.<br>---------------------------<br>三個層面上解決這個問題:<br>1. 代碼層面,你須要在本身的PHP數據庫鏈接處增長大體以下代碼。<br>if( in_array(mysql_errno(), array(2006, 2013))){<br> mysql_close();<br> mysql_connect(...);<br> mysql_query(...);<br>}<br>也就是說遇到2006,2013錯誤就從新鏈接一下MySQL。<br>2. MySQL層面,須要配置一些參數 my.cnf (可是這裏是linux下,個人windows配置怎麼辦?)<br>wait_timeout = x 超時時間 如600秒<br>max_allowed_packet = y 最大容許數據量<br>適當增長x,y的值。<br>3. 通常出現這種狀況不是全部例句而是單個表,請你先修復表通常都能解決這類問題。<br>----------------------<br>MySQL Error 2013: Lost connection to MySQL server during query<br>錯誤代碼: 1153 - Got a packet bigger than 'max_allowed_packet' bytes <br>解決方法:<br>修改mysql.ini(網上都說是這個文件,找了N久終於知道在哪裏了,個人目錄是在 D:\MySQL_Data\MySQL Server 5.5 在MySQL_Data文件夾下)文件添加以下代碼便可<br>max_allowed_packet=500M<br><br>若是不能夠的話就修改D:\MySQL\MySQL Server 5.5\my-huge.ini<br>裏的max_allowed_packet=16M 把16改成500 <br>我是根據此方法作的,試試<br>----------------------<br>4. 能夠直接在mysql中設置:<br>#show variables like '%timeout%';<br>#show variables like 'max_allowed_packet'<br>set global wait_timeout=60000;<br>#set global max_allowed_packet = 2*1024*1024</p></div>mysql