問題解決:mysql執行插入操作,報“You can change this value on the server by setting the max_allowed_packet”

問題場景

項目開發過程中,數據庫是使用MYSQL。因爲有一個表的字段是設置爲LONGTEXT,最大可以存放 4GB的內容。而這次,在控制檯執行SQL,因爲大小過大,導致報錯。具體報錯提示如下:

Packet for query is too large (11234222 > 4194304). You can change this value on the server by setting the max_allowed_packet’ variable.

在這裏插入圖片描述

問題環境

軟件 版本
mysql 5.6.38

問題原因

從問題提示,我們就可以知道,是因爲SQL執行的時候,被限制了大小,而SQL超過了參數max_allowed_packet指定的大小,導致SQL執行報錯。所以,這個時候,就得改一下mysql的配置參數,使得SQL可以執行。
在這裏插入圖片描述

解決方案

臨時方案

如果沒有權限去數據庫服務器上面更新mysql配置,比如博主這邊的mysql服務是其他團隊提供的docker容器,我沒有權限登錄過去更新。所以,這個時候,可以使用root用戶執行以下語句:

// 查看當前參數配置
show variables like 'max_allowed_packet';
// 設置參數指標
set GLOBAL max_allowed_packet=33554432;

執行完畢之後,如果你立刻在這個控制檯執行show variables like 'max_allowed_packet';,你會發現,結果和一開始跑的沒有什麼差別,就是更新沒有生效!
在這裏插入圖片描述
不要着急,這個不生效不是博主的sql寫的有問題,是因爲我們查詢時使用的是show variables的話,其效果等同於show session variables,查詢的是會話變量,只有使用show global variables,查詢的纔是全局變量。當然,爲了保守起見,我們需要斷開數據庫連接,重新連接數據庫。如果大家是使用Aqua Data Studio,則點擊以下按鈕即可:
在這裏插入圖片描述
如果不是,是在控制檯,就先exit,然後再登錄。然後再執行show variables like 'max_allowed_packet';,你會發現,結果已經生效了。
在這裏插入圖片描述

永久方案(需要重啓mysql服務)

如果大家的mysql服務器是本地的,或者是有權限修改配置文件並重啓的,則可以通過修改配置文件,然後重啓mysql服務器的方式來解決這個問題。
找到my.cnf文件,在mysqld選項內部,添加max_allowed_packet = 200M,如下圖:
在這裏插入圖片描述
接下來重啓mysql服務器即可。
在這裏插入圖片描述

結果

再執行插入語句,順利插入!!!
在這裏插入圖片描述

總結

工作中,總是會遇到很多問題。好記性不如爛筆頭。如果寫下博客,在寫的過程中,可以從中汲取不同的東西。如果想寫的出彩,就會去思考很多,寫出來的文章就會更好,對自己的成長就更大!
在這裏插入圖片描述

隨緣求贊

如果我的文章對大家產生了幫忙,可以在文章底部點個贊或者收藏;
如果有好的討論,可以留言;
如果想繼續查看我以後的文章,可以點擊關注
可以掃描以下二維碼,關注我的公衆號:楓夜之求索閣,查看我最新的分享!
在這裏插入圖片描述
拜拜

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