mysql max-allowed-packet(设置一条记录大小)

max_allowed_packet
Mysql 5.1 遇到的信息包过大问题 用客户端导入数据的时候,遇到 错误代码: 1153 - Got a packet bigger than 'max_allowed_packet' bytes 终止了数据导入。
当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,可能会遇到“丢失与MySQL服务器的连接”错误。
客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。一般情况下,服务器默认max-allowed-packet为1MB
如果你正在使用mysql客户端程序,其max_allowed_packet变量的默认值为16MB。要想设置较大的值,可用下述方式启动mysql
mysql>mysql --max-allowed-packet=32M
在my.ini也可以更改,需要重新启动mysql
在my.ini加入[mysqld]max_allowed_packet=16M

修改方法

1) 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。(在[mysqld]下加上max_allowed_packet=16M,保存重启mysql后)

max_allowed_packet = 20M
如果找不到my.cnf可以通过

mysql --help | grep my.cnf
去寻找my.cnf文件。

2) 方法2
(很妥协,很纠结的办法)

进入mysql server

在mysql 命令行中运行

set global max_allowed_packet = 2*1024*1024*10
然后关闭掉这此mysql server链接,再进入。

show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功

经验总结:

在很多台机器上用方法一都没问题,但2011年11月14日遇到一台机器死活都不成功,

使用命令行方式:set global max_allowed_packet = 16M;

也不行,但使用

set global max_allowed_packet = 2*1024*1024*10;
成功了,很是郁闷


本文固定链接: http://blog.wwllcchf.com/?p=240 | 吴文龙的个人博客

作者:wuwenlong 于2013年06月14日发表 & 关键词:
mysql max-allowed-packet(设置一条记录大小) | 吴文龙的个人博客

报歉!评论已关闭.