在我們使用mysql導(dǎo)入大文件sql時(shí)可能會(huì)報(bào)MySQL server has gone away錯(cuò)誤,該問(wèn)題是max_allowed_packet配置的默認(rèn)值設(shè)置太小奠货,只需要相應(yīng)調(diào)大該項(xiàng)的值之后再次導(dǎo)入便能成功介褥。該項(xiàng)的作用是限制mysql服務(wù)端接收到的包的大小,因此如果導(dǎo)入的文件過(guò)大則可能會(huì)超過(guò)該項(xiàng)設(shè)置的值從而導(dǎo)致導(dǎo)入不成功递惋!下面我們來(lái)看一下如何查看以及設(shè)置該項(xiàng)的值柔滔。
查看 max_allowed_packet 的值
show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
可以看到默認(rèn)情況下該項(xiàng)的大小只有4M,接下來(lái)將該值設(shè)置成150M(10241024150)
set global max_allowed_packet=157286400;
此時(shí)再查看大小
show global variables like 'max_allowed_packet';
通過(guò)調(diào)大該值萍虽,一般來(lái)說(shuō)再次導(dǎo)入數(shù)據(jù)量大的sql應(yīng)該就能成功了睛廊,如果任然報(bào)錯(cuò),則繼續(xù)再調(diào)大一些就行贩挣,請(qǐng)注意通過(guò)在命令行中進(jìn)行設(shè)置只對(duì)當(dāng)前有效喉前,重啟mysql服務(wù)之后則恢復(fù)默認(rèn)值,但可以通過(guò)修改配置文件(可以在配置文件my.cnf中添加max_allowed_packet=150M即可)來(lái)達(dá)到永久有效的目的王财,可其實(shí)我們并不是經(jīng)常有這種大量數(shù)據(jù)的導(dǎo)入操作,所以個(gè)人覺(jué)得通過(guò)命令行使得當(dāng)前配置生效即可裕便,沒(méi)有必要修改配置文件绒净。
[轉(zhuǎn)載自](https://www.cnblogs.com/phpk/p/10750259.html)