Mysql“信息包过大”的解决方法

通信信息包是发送至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。

时间: 2024-09-22 09:15:35

Mysql“信息包过大”的解决方法的相关文章

MySQL中文模糊检索问题的解决方法

mysql|解决|问题|中文 MySQL中文模糊检索问题的解决方法来源:林兴陆 在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的 记录,如查找 "-0x1.ebea4bfbffaacp-4%" 时,返回的可能有中文字符,却没有 a 字符存在. 本人以前也曾遇到过类似问题,经详细阅读 MySQL 的 Manual ,发现可以 有一种方法很方便的解决并得到满意的结果. 例子: ·希望通过"标题"对新闻库进行检索,关键字可能包含是中英文,如 下 SQL

springmvc-Springmvc整合hessian,客户端抛出异常信息,求大神解决,急···跪求···

问题描述 Springmvc整合hessian,客户端抛出异常信息,求大神解决,急···跪求··· 严重: Servlet.service() for servlet spring threw exception java.net.HttpRetryException: cannot retry due to redirection, in streaming mode at sun.net.www.protocol.http.HttpURLConnection.followRedirect(H

CentOS 7下MySQL服务启动失败的快速解决方法_Mysql

今天,启动MySQL服务器失败,如下所示: [root@spark01 ~]# /etc/init.d/mysqld start Starting mysqld (via systemctl): Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe&qu

Web2.0:信息过载的原因和解决方法

信息重复.信息过载.信息强迫.个性化定制.搜索引擎依赖,这五者是相互紧密联系的.在信息不断膨胀的互联网,尤其是在标榜着多人贡献的Web2.0时代,信息重复与信息过载尤为明显.信息过载的原因很多,其中一个原因便是信息重复,信息过载会导致焦虑.烦躁等等.本文试图探讨信息过载的原因和解决方法. (信息过载让我们犹如在垃圾场里寻找非垃圾) 信息过载犹如通货膨胀,虽然钱(信息数)是多了,但能购买的商品(有用的信息)少了. 一.信息过载的外部原因 使用RSS阅读器的人可能会深受信息过载的困扰,信息过载的原因

php连接不上mysql但mysql命令行操作正常的解决方法

 这篇文章主要介绍了php连接不上mysql但mysql命令行操作正常的解决方法,需要的朋友可以参考下 故障状况:php网站连接mysql失败,但在命令行下通过mysql命令可登录并正常操作. 解决方案: 1.命令行下登录mysql,执行以下命令:  代码如下:show variables like 'socket'; 执行后会得到类似于如下回显:  代码如下: "Variable_name"        "Value" "socket"  

CI框架出现mysql数据库连接资源无法释放的解决方法_php实例

本文实例分析了CI框架出现mysql数据库连接资源无法释放的解决方法.分享给大家供大家参考,具体如下: 使用ci框架提供的类查询数据: $this->load->database(); $query = $this->db->query($sql); 程序运行一段时间之后,报错,告知数据库too many connections 很明显MySQL数据库连接资源超过了 max_connections 设定值.立马在每个查询之后,添加资源释放脚本: $this->db->c

奥运流量包使用时间有多久 奥运流量包用不了解决方法

奥运流量包使用时间有多久 10元6G奥运流量包"和"19元6G奥运流量包",是只能在2016年8月1日至8月31日期间订购,订购后立即生效,订购后不允许退订,仅限订购当月使用,就是客户只能在2016年8月内使用,是当月的流量包,下个月就会到期的哟~ 奥运流量包用不了解决方法介绍 (1)10元6GB奥运流量包:仅含6GB"咪咕视频"APP中的"奥运专区"定向流量或"咪咕直播"APP中的"奥运专区"定

Unity3D占用内存太大的解决方法

最近网友通过网站搜索Unity3D在手机及其他平台下占用内存太大. 这里写下关于Unity3D对于内存的管理与优化. Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBundle,其实两者区别不大. Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时 动态加载,可以指定路径和来源的. 其实场景里所有静态的对象也有这么一个加载过程,只是Unity3D后台替你

MySQL复制出错 Last_SQL_Errno:1146的解决方法_Mysql

背景:我们在做数据迁移或者拆分的时候,使用Tablespace transcation 这种解决方案时,很有可能就会遇到 从库复制出错,报: Last_SQL_Errno: 1146 那么具体错误内容可能会有如下: Last_SQL_Error: Error 'Table 'spider.tb_city_population_rank' doesn't exist' on query. Default database: 'spider'. Query: 'alter table tb_city