我在我的MySQL数据库中的BLOB字段有一个问题-当上传大于大约1MB的文件时,我得到一个错误,大于max_allowed_packet是不允许的。

以下是我的尝试:

在MySQL查询浏览器中,我运行了一个像“max_allowed_packet”这样的显示变量,它给了我1048576。

然后我执行查询集全局max_allowed_packet=33554432,然后显示像'max_allowed_packet'这样的变量-它像预期的那样给我33554432。

但是当我重新启动MySQL服务器时,它神奇地回到1048576。我哪里做错了?

额外的问题,是否可以压缩一个BLOB字段?


当前回答

设置全局max_allowed_packet=10000000000;

其他回答

对于那些运行wamp mysql服务器

Wamp托盘图标-> MySql -> my.ini

[wampmysqld]
port        = 3306
socket      = /tmp/mysql.sock
key_buffer_size = 16M
max_allowed_packet = 16M        // --> changing this wont solve
sort_buffer_size = 512K

向下滚动到最后,直到你找到

[mysqld]
port=3306
explicit_defaults_for_timestamp = TRUE

在中间添加packet_size行

[mysqld]
port=3306
max_allowed_packet = 16M
explicit_defaults_for_timestamp = TRUE

检查它是否适用于此查询

Select @@global.max_allowed_packet;

如果你想上传大尺寸的图片或数据库中的数据。只需将数据类型更改为“BIG BLOB”。

如果在执行备份时出现此错误,可以在my.cnf中设置max_allowed_packet,特别是mysqldump。

[mysqldump]
max_allowed_packet=512M

我一直在执行mysqldump时得到这个错误,我不明白,因为我在[mysqld]节下的my.cnf中设置了这个。一旦我发现我可以设置它为[mysqldump],我设置了值,我的备份完成没有问题。

对于任何在Amazon RDS服务上运行MySQL的人来说,这个更改是通过参数组完成的。您需要创建一个新的PG或使用一个现有的PG(除了默认的只读PG)。

您应该搜索max_allowed_packet参数,更改其值,然后点击保存。

回到您的MySQL实例,如果您创建了一个新的PG,您应该将PG附加到您的实例(您可能需要重新启动)。 如果您更改了已附加到实例的PG,则更改将在不重新引导的情况下应用到已附加该PG的所有实例。

在MYSQL 5.7中,max_allowed_packet最大为1G。如果你想把它设置为4G,它会失败,没有错误和警告。