我导入一个MySQL转储和得到以下错误。

$ mysql foo < foo.sql 
ERROR 1153 (08S01) at line 96: Got a packet bigger than 'max_allowed_packet' bytes

显然,数据库中有附件,需要进行非常大的插入。


这是在我的本地机器上,一台安装了MySQL 5的Mac电脑。

我在哪里改变max_allowed_packet能够导入转储?

还有什么需要我设置的吗?

只是运行mysql——max_allowed_packet=32M…导致同样的错误。


当前回答

跟你的问题有点无关,下面是谷歌的问题。

如果您没有mysqldump SQL,则可能是您的SQL被破坏了。

我只是在我的代码中意外地有一个未关闭的字符串文字而得到这个错误。手指不小心会发生。

对于一个失控字符串,这是一个非常棒的错误消息,谢谢MySQL!

其他回答

这可以在你的my.ini文件(在Windows上,位于\Program Files\MySQL\MySQL Server)下的服务器部分中更改,例如:

[mysqld]

max_allowed_packet = 10M

有时类型设置:

max_allowed_packet = 16M

在my.ini中不能工作。

尝试确定my.ini,如下所示:

set-variable = max_allowed_packet = 32M

or

set-variable = max_allowed_packet = 1000000000

然后重启服务器:

/etc/init.d/mysql restart

使用max_allowed_packet变量发出如下命令

mysql——max_allowed_packet = 32米 -u root -p database < dump.sql .sql

我已经通过这个查询解决了我的问题

SET GLOBAL max_allowed_packet=1073741824;

并使用此查询检查max_allowed_packet

SHOW VARIABLES LIKE 'max_allowed_packet';

将max_allowed_packet设置为与使用mysqldump转储时相同(或更多)的值。如果不能这样做,请使用较小的值再次转储。

也就是说,假设您使用mysqldump转储了它。如果你使用其他工具,你就只能靠自己了。