因工作需要负懦,需要導(dǎo)入一個(gè)100M左右的sql文件到MySQL數(shù)據(jù)庫(kù)
導(dǎo)入的過(guò)程中出現(xiàn)ERROR 2006 MySQL server has gone away
錯(cuò)誤,數(shù)據(jù)導(dǎo)入失敗柏腻。
是因?yàn)閟ql文件過(guò)大纸厉,超過(guò)了MySQL預(yù)設(shè)的最大允許值。
**解決方法:
**查看資料五嫂,找到設(shè)置允許導(dǎo)入的sql大小的參數(shù): max_allowed_packet
颗品, 官方解釋是適當(dāng)增大 max_allowed_packet
參數(shù)可以使client端到server端傳遞大數(shù)據(jù)時(shí),系統(tǒng)能夠分配更多的擴(kuò)展內(nèi)存來(lái)處理贫导。查看MySQL max_allowed_packet
的值
mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
可以看到是1M左右抛猫,然后調(diào)大為128M(1024*1024*128)
mysql> set global max_allowed_packet=134217728;
Query OK, 0 rows affected (0.00 sec)
mysql> show global variables like 'max_allowed_packet';
+-------------------+-----------+
| Variable_name | Value |
+-------------------+-----------+
| max_allowed_packet| 134217728 |
+-------------------+-----------+
1 row in set (0.00 sec)
修改后執(zhí)行導(dǎo)入,一切正常孩灯,解決問(wèn)題闺金。
注意: 使用set global
命令修改 max_allowed_packet
的值,重啟MySQL后會(huì)失效峰档,還原為默認(rèn)值败匹。如果想重啟后不還原,可以打開 my.cnf 文件讥巡,修改 max_allowed_packet = 128M
即可掀亩。
本文標(biāo)題:mysql導(dǎo)入大批量數(shù)據(jù)出現(xiàn)MySQL server has gone away的解決方法
文章作者:layjoy
原始鏈接:http://layjoy.space/2016/12/21/mysql-1/