mysql插入太多數據導致MySQL server has gone away

本博客原文
另安利一篇我翻譯的國外大牛的神經網絡入門文章
最近在一次開發過程中,將數據寫入mysql時候總是報MySQL server has gone away的錯誤,因爲mysql就是本地啓動的,而且從插入到報錯整個過程時間很短,因此不可能是連接方面的timeout一類的問題。最後通過網上搜索,看到了遇到類似問題的帖子,參考作者的做法,問題得到了解決。
原因是max_allowed_packet參數導致的。按照官方解釋增大這個參數可以使得從client到server端傳遞大數據時,系統能夠分配更多的擴展內存來處理。
首先查看mysql max_allowed_packet的值

mysql> show global variables like 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
1 row in set (0.00 sec)

可以看到默認是4M,我的數據達到了5M多,難怪報錯。修改如下

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)

至此問題得到解決。另外如果重啓mysql,這裏的設置會被還原。如果想重啓後不還原,可以打開 my.cnf 文件,添加max_allowed_packet = 256M即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章