参考:

https://blog.csdn.net/yuewuyanhuang/article/details/132432726

问题场景 执行了一句较长SQL,报错:Got a packet bigger than ‘max_allowed_packet’ bytes。

问题分析 其大概意思就是指sql语句记录的大小超过了它预先设置的大小,所以就会出现这个错误,导致无法执行成功。

解决方案 一般而言,修改SQL对于此执行块大小的配置项即可,但是SQL有运行时配置和持久化配置两种,因此对应两种解决方案。 方案一 临时生效,于SQL命令行执行如下语句

将执行块大小修改为512M

set global max_allowed_packet=524288000;
​

注意此方案执行后,缺点在于数据库重启则该配置会失效,优势在于不用重启数据库,处于生产环境下的数据库一般不太适合重启,因此这是折中方案。

方案二 永久生效,修改my.cnf文件。

1. 编辑配置文件

vi /etc/my.cnf

2. 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):

max_allowed_packet=512M