当前位置:  开发笔记 > 编程语言 > 正文

MySQL错误1153 - 获得的数据包大于'max_allowed_pa​​cket'字节

如何解决《MySQL错误1153-获得的数据包大于'max_allowed_pa​​cket'字节》经验,为你挑选了7个好方法。

我正在导入MySQL转储并收到以下错误.

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

显然,数据库中有附件,这使得插入非常大.


这是在我的本地机器上,从MySQL软件包安装MySQL 5的Mac.

我在哪里可以更改max_allowed_packet以导入转储?

还有什么我应该设置的吗?

刚刚运行mysql --max_allowed_packet=32M …导致了同样的错误.



1> Michael Pryo..:

您可能必须为客户端(您正在运行以执行导入)和正在运行并接受导入的守护程序mysqld更改它.

对于客户端,您可以在命令行上指定它:

mysql --max_allowed_packet=100M -u root -p database < dump.sql

另外,更改 mysqld部分下的my.cnf或my.ini文件并设置:

max_allowed_packet=100M

或者您可以在连接到同一服务器的MySQL控制台中运行这些命令:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000;

(对数据包大小使用非常大的值.)


请注意,使用"set global"会一直工作,直到下一个mysql服务重新启动.
仅供参考 - 它帮助我解决了一个不同的错误 - "#2006服务器已经消失"
猜测企业支持仍然胜过这个社区的事情:P
在CentOS 5上,my.cnf位于/etc/my.cnf
跳过"设置全局"和最后的";" 将这些值添加到my.ini或my.cnf文件时.例如:my.conf中的"net_buffer_length = 1000000".

2> Joshua Fox..:

作为michaelpryor说,你必须改变它为双方的客户守护程序mysqld服务器.

他对客户端命令行的解决方案很好,但是根据配置,ini文件并不总能解决问题.

因此,打开一个终端,键入mysql以获取mysql提示符,并发出以下命令:

set global net_buffer_length=1000000; 
set global max_allowed_packet=1000000000; 

保持mysql提示符处于打开状态,并在第二个终端上运行命令行SQL执行.


解决了我的问题; 我正在做的导入是一次性的,我不能轻易改变配置.这很有效.:d

3> GHad..:

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

[mysqld]

max_allowed_packet = 10M


在mac上,文件显然位于其他地方.
当然,但配置仍然在某处,虽然我不知道确切的位置

4> kch..:

从mysql.com dmg软件包发行版使用MySQL时,在Mac OS X上重新启动my.cnf

默认情况下,my.cnf无处可寻.

你需要复制一个/usr/local/mysql/support-files/my*.cnf/etc/my.cnf并重新启动mysqld.(如果安装了它,可以在MySQL偏好设置面板中执行此操作.)



5> 小智..:

在etc/my.cnf中尝试将max_allowed _packet和net_buffer_length更改为

max_allowed_packet=100000000
net_buffer_length=1000000 

如果这不起作用,那么尝试改为

max_allowed_packet=100M
net_buffer_length=100K 



6> Primoz Rome..:

修复是增加MySQL守护进程的max_allowed_pa​​cket.您可以通过以Super身份登录并运行以下命令来对正在运行的守护程序执行此操作.

# mysql -u admin -p

mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected (0.00 sec)

mysql> set global max_allowed_packet=1000000000;
Query OK, 0 rows affected (0.00 sec)

然后导入转储:

gunzip < dump.sql.gz | mysql -u admin -p database



7> Mike..:

在CENTOS 6 /etc/my.cnf上,在[mysqld]部分下正确的语法是:

[mysqld]
# added to avoid err "Got a packet bigger than 'max_allowed_packet' bytes"
#
net_buffer_length=1000000 
max_allowed_packet=1000000000
#

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有