您现在的位置: 软界网资讯中心软件技术数据库MySQL > 资讯显示
行业新闻|互联网|信息安全|软件评测|游戏娱乐|人才新闻|展会信息|软件技术|精英访谈|公司新闻      
教你轻松掌握“信息包过大”的解决方法
2007-11-30 0:00:00   网友评论       阅读次数 点此评论
  

  通信信息包是发送至MySQL服务器的单个SQL语句,或发送至客户端的单一行。

  在MySQL 5.1服务器和客户端之间最大能发送的可能信息包为1GB。

  当MySQL客户端或mysqld服务器收到大于max_allowed_packet字节的信息包时,将发出“信息包过大”错误,并关闭连接。对于某些客户端,如果通信信息包过大,在执行查询期间,了能回遇到“丢失与MySQL服务器的连接”错误。

  客户端和服务器均有自己的max_allowed_packet变量,因此,如你打算处理大的信息包,必须增加客户端和服务器上的该变量。

  如果你正在使用mysql客户端程序,其max_allowed_packet变量的默认值为16MB。要想设置较大的值,可用下述方式启动mysql:

  mysql> mysql --max_allowed_packet=32M

  它将信息包的大小设置为32MB。

  服务器的默认max_allowed_packet值为1MB。如果服务器需要处理大的查询,可增加该值(例如,如果准备处理大的BLOB列)。例如,要想将该设置为16MB,可采用下述方式启动服务器:

  mysql> mysqld --max_allowed_packet=16M

  也能使用选项文件来设置max_allowed_packet。要想将服务器的该变量设置为16MB,可在选项文件中增加下行内容:

  [mysqld]

  max_allowed_packet=16M

  增加该变量的值十分安全,这是因为仅当需要时才会分配额外内存。例如,仅当你发出长查询或mysqld必须返回大的结果行时mysqld才会分配更多内存。该变量之所以取较小默认值是一种预防措施,以捕获客户端和服务器之间的错误信息包,并确保不会因偶然使用大的信息包而导致内存溢出。

  如果你正是用大的BLOB值,而且未为mysqld授予为处理查询而访问足够内存的权限,也会遇到与大信息包有关的奇怪问题。如果怀疑出现了该情况,请尝试在mysqld_safe脚本开始增加ulimit -d 256000,并重启mysqld。

      来源: 作者:
【评论查看】
更多关于 MySQL Vista  的新闻
07年十佳IT产品 Windows XP挤掉Vista/图 2007-12-7 0:00:00
XP SP3多数功能借鉴Vista 安装将无需密码 2007-12-6 0:00:00
Vista SP1反盗版有新招 30天不激活就黑屏 2007-12-5 16:35:27
微软:Windows Vista盗版率只相当于XP一半 2007-12-5 16:35:25
微软改变对待盗版Vista策略 态度不再强硬 2007-12-5 16:34:02
      
热点新闻
·《春秋Q传》全新师徒系统即将上线
·Photoshop实例:调出MM清
·CAT开出48亿罚单 华为高层赴泰
·"中国黑客门"调查:被攻击国家三缄
·美"国安小黑屋"曝光:监视全球网民
·还原美丽:Photoshop美女磨
·炫出我的个性!QQ皮肤绘制全程实录
·防QQ密码被盗的十项技巧
·微软否认"Vista可能引起网络性
·Adobe将推在线版免费Photo
热门评论
·惠普连续5个季度压制戴尔 稳居PC
·Photoshop实例:调出MM清
·起价3000元 龙芯电脑首次接受消
·Adobe将推在线版免费Photo
·西门子开展举报行动 已接到部分举报
·微软否认"Vista可能引起网络性
·防QQ密码被盗的十项技巧
·还原美丽:Photoshop美女磨
·赛迪顾问与微软发布中国IT服务产业
·戴尔正酝酿“iPhone杀手” 明