mysql導(dǎo)入大批量數(shù)據(jù)出現(xiàn)MySQL server has gone away的解決方法

因工作需要,需要導(dǎo)入一個200M左右的sql到user庫

執(zhí)行命令

mysql>?use?user Database?changed mysql>?source?/tmp/user.sql

導(dǎo)入的過程中出現(xiàn)MySQL server has gone away錯誤,數(shù)據(jù)導(dǎo)入失敗。

錯誤信息如下:

ERROR?2006?(HY000):?MySQL?server?has?gone?awayERROR?2006?(HY000):?MySQL?server?has?gone?away No?connection.?Trying?to?reconnect... Connection?id:????11Current?database:?userERROR?2006?(HY000):?MySQL?server?has?gone?away No?connection.?Trying?to?reconnect... Connection?id:????12Current?database:?userERROR?2006?(HY000):?MySQL?server?has?gone?awayERROR?2006?(HY000):?MySQL?server?has?gone?away No?connection.?Trying?to?reconnect... Connection?id:????13Current?database:?user

開始以為是超時導(dǎo)致,因此調(diào)大了 connect_timeoutwait_timeout 的值。

重新執(zhí)行后問題依舊。
解決方法:

查看資料,發(fā)現(xiàn)了 max_allowed_packet 參數(shù),
官方解釋是適當增大 max_allowed_packet 參數(shù)可以使client端到server端傳遞大數(shù)據(jù)時,系統(tǒng)能夠分配更多的擴展內(nèi)存來處理。

查看mysql max_allowed_packet的值

mysql>?show?global?variables?like?'max_allowed_packet'; +--------------------+---------+|?Variable_name??????|?Value???| +--------------------+---------+|?max_allowed_packet?|?4194304?| +--------------------+---------+

可以看到是4M,然后調(diào)大為256M(1024*1024*256)

mysql>?set?global?max_allowed_packet=268435456; Query?OK,?0?rows?affected?(0.00?sec)mysql>?show?global?variables?like?'max_allowed_packet'; +--------------------+-----------+|?Variable_name??????|?Value?????| +--------------------+-----------+|?max_allowed_packet?|?268435456?| +--------------------+-----------+1?row?in?set?(0.00?sec)

修改后執(zhí)行導(dǎo)入,一切正常,解決問題。
注意:
使用set global命令修改 max_allowed_packet 的值,重啟mysql后會失效,還原為默認值。

如果想重啟后不還原,可以打開 my.cnf 文件,添加 max_allowed_packet = 256M 即可。

本篇講解了mysql導(dǎo)入大批量數(shù)據(jù)出現(xiàn)MySQL server has gone away的解決方法,更多相關(guān)內(nèi)容請關(guān)注php中文網(wǎng)。

相關(guān)推薦:

mysql 搜尋附近N公里內(nèi)數(shù)據(jù)的實例

mysql 搜尋附近N公里內(nèi)數(shù)據(jù)的實例

mysql 搜尋附近N公里內(nèi)數(shù)據(jù)的實例

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊8 分享