场景
我想用MySQL数据库来存储web上传的图片文件,可是当我上传的图片大小超过 1 MB(1048576 Byte)
时,就没办法上传,还报了下面的错误信息:
Error updating database. Cause: com.mysql.jdbc.PacketTooBigException:
Packet for query is too large (2279732 > 1048576). You can change this value on the server by setting the max_allowed_packet variable.
问题
由于上传的图片尺寸过大,超过了MySQL默认的包长度限制,导致数据库更新失败。
原因
MySQL的max_allowed_packet
参数默认设置较小,无法处理大尺寸的图片或数据包。默认限制为1MB (1048576字节),而上传的图片大小为2279732字节,超出了此限制。
解决
通过修改MySQL配置文件my.ini
,调整max_allowed_packet
参数的值来解决此问题。
步骤
-
找到MySQL配置文件
my.ini
:- 在MySQL安装目录下找到
my.ini
文件。
- 在MySQL安装目录下找到
-
修改配置文件:
- 打开
my.ini
文件,找到[mysqld]
配置段落。 - 添加或修改
max_allowed_packet
参数的值。根据需要,将其设置为一个较大的值(例如10M)。
[mysqld] max_allowed_packet = 10M
- 打开
-
保存并重启MySQL服务:
- 保存修改后的配置文件。
- 重启MySQL服务以使配置生效。
示例截图
以下是修改my.ini
文件的示例截图:
注
- 如果
my.ini
文件中已经存在max_allowed_packet
参数,只需修改其后面的值即可。 - 修改配置文件后,务必重启MySQL服务,以确保新的配置生效。