Packet for query is too large (1,335,421 > 1,048,576). You can change this value on the server by se

项目场景:

MySQL数据库批量插入数据产生的错误:

Packet for query is too large (1,335,421 > 1,048,576). You can change this value on the server by setting the ‘max_allowed_packet’ variable.

问题描述

这里是测试给MySQL数据库中批量插入大量数据,产生的问题,这里是,插入10万条数据,产生的异常!

在这里插入图片描述


原因分析:

出现问题的原因:批量插入数据量过大 MySQL 根据配置文件会限制Server接受的数据包大小。有时候插入、更新或查询时数据包的大小,会受max_allowed_packet 参数限制,导致操作失败。

解决方案:

  • 查询当前数据库设置的大小 max_allowed_packet 大小
show VARIABLES like '%max_allowed_packet%';

在这里插入图片描述

  • 说明:
1*1024*1024 = 1048576 =1M
  • 解决办法

  • Windows 一般都是修改 my.ini 文件

[mysqld]
max_allowed_packet = 524288000
  • Linux 操作系统 修改my.cnf 文件
vim /etc/my.cnf
[mysqld]
max_allowed_packet = 524288000
  • 注意哦:最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G
500*1024*1024 =524288000=500M
  • 修改完成之后要重启 MySQL 然后检查 max_allowed_packet 大小
    在这里插入图片描述

总结:

max_allowed_packet参数介绍

  • max_allowed_packet 是指MySQL服务器端和客户端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。

注意:

  • 通过命令行方式修改时,不能用M、G,只能这算成字节数设置。使用配置文件修改才允许设置M、G单位。
  • 命令行修改之后,需要退出当前回话(关闭当前mysql server链接),然后重新登录才能查看修改后的值。通过命令行修改只能临时生效,如果下次数据库重启后对应的配置就会又复原了,因为重启的时候加载的是配置文件里面的配置项。
  • max_allowed_packet 最大值是1G(1073741824),如果设置超过1G,查看最终生效结果也只有1G
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇探长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值