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

以下是我的尝试:

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

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

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

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


当前回答

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

其他回答

max_allowed_packet变量可以通过运行查询全局设置。

但是,如果您没有在my.ini文件中更改它(如dragon112所建议的那样),则该值将在服务器重新启动时重置,即使您全局地设置了它。

更改每个人允许的最大数据包为1GB,直到服务器重新启动。

SET GLOBAL max_allowed_packet=1073741824;

许多受访者发现了这个问题,并给出了解决方案。

我只是想建议另一种解决方案,即从工具Mysql Workbench中更改全局变量值。当然,如果您在服务器上使用本地运行的Workbench(或通过SSH连接)

你只需要连接到你的实例,然后进入菜单:

Server -> Options File -> Networking -> max_allowed_wrapped . zip

您设置了所需的值,然后需要重新启动MySql服务。

此错误是因为您的数据包含大于设定值。

只需要写下max_allowed_packed=500M 或者你可以计算500*1024k,如果你想用它来代替500M。

现在重新启动MySQL。

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

[mysqldump]
max_allowed_packet=512M

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

更改my.ini或~/.my.cnf文件,在[mysqld]或[client]部分中加入一行:

max_allowed_packet=500M

然后重新启动MySQL服务,就完成了。

有关更多信息,请参阅文档。