采集数据时,总有几条入不了库。尝试手动入库的时候,发生了报错。


运行环境 Runtime environment

1
2
3
4
5
操作系统: Windos10  
IDE: webStrom 2021.3.1 x64
语言: nodeJs v14.15.4
框架: hexo "5.3.0"
theme: [Butterfly "3.6.1"]

症状

从网上将数据复制下来,用Navicat填写进相应字段中,按保存发生了错误。

1
Got a packet bigger than‘max_allowed_packet’bytes

问题原因

该字段存储的是站源的原生接口json数据。

字段类型为json类型,长度应该是足够的,但是也存不进去。

发现是由于max_allowed_packet的值设置过小的原因,

只需要将max_allowed_packet值设置大一点就OK了。

解决办法

通过终端进入mysql控制台,输入如下命令可以查看max_allowed_packet值的大小。

show VARIABLES like ‘%max_allowed_packet%’;

显示的结果:

1
2
3
4
5
6
+——————–+———+
| Variable_name | Value |
+——————–+———+
| max_allowed_packet | 1048576 |
+——————–+———+
————————————————

以上说明目前的配置是:1M

需要搞大max_allowed_packet的值:

set global max_allowed_packet = 1048576*10

退出mysql命令行,然后重新登录。

show VARIABLES like ‘%max_allowed_packet%’;

设置完之后,再重新导入数据,OK,一切正常。

注意

使用这种方法,重启服务器之后又恢复默认值了。

只是导数据的时候临时将其值改大,

导完之后尽量让其恢复原值,

因为max_allowed_packet设置过大可能会导致服务器太忙来不及接收,

网络差的时候也可能会出现丢包的现象。