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

以下是我的尝试:

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

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

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

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


当前回答

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

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

现在重新启动MySQL。

其他回答

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

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

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

我的一个初级开发人员在为我修改这个问题时遇到了问题,所以我想我应该为linux用户扩展更详细的内容:

open terminal ssh root@YOURIP enter root password nano /etc/mysql/my.cnf (if command is not recognized do this first or try vi then repeat: yum install nano ) add the line: max_allowed_packet=256M (obviously adjust size for whatever you need) under the [MYSQLD] section. He made a mistake of putting it at the bottom of the file first so it did not work. Control + O (save) then Enter (confirm) then Control + X (exit file) service mysqld restart You can check the change in the variables section on phpmyadmin

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

max_allowed_packet=500M

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

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

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

我想有些人也想知道如何在你的电脑上找到my.ini文件。对于windows用户,我认为最好的方法如下:

Win+R(“运行”的快捷方式),输入服务。msc,输入 你可以找到一个像'MySQL56'这样的条目,右键单击它,选择属性 你可以看到“D:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld”——defaults-file=“D:\ProgramData\MySQL\MySQL Server 5.6\my.ini”MySQL56

我从http://bugs.mysql.com/bug.php?id=68516上得到了这个答案