mysql Out of memory (Needed 16777224 bytes)的错误解决

这几天碰到这个错误。
至于我改的这几个值是不是正确的解决方法,目前还不知道。先贴出来。
如果过一段时间我还是没有更新,那以后同志们都参考吧 。
Out of memory (Needed 16777224 bytes)的错误解决
看看手册:
[url]http://dev.mysql.com/doc/refman/5.1/en/memory-storage-engine.html[/url]
开始我更改了query_cache_size的值。
好像也不行。
之后
增大query_cache_limit 的值。
还有max_heap_table_size
和tmp_table_size的值。
因为我们的存储过程中用了好多的预处理语句。而且语句的结果都是非常大的。
起初我的结果:
mysql> show variables like 'max_heap_table_size';
+---------------------------------+----------------------+
| Variable_name | Value |
+---------------------------------+----------------------+
| max_heap_table_size | 16777216 |
+---------------------------------+----------------------+

mysql> show variables like 'tmp_table_size';
+---------------------------------+----------------------+
| Variable_name | Value |
+---------------------------------+----------------------+
| tmp_table_size | 16777216 |
+---------------------------------+----------------------+

我改了my.cnf文件

mysql> show variables like 'max_heap_table_size';
+---------------------------------+----------------------+
| Variable_name | Value |
+---------------------------------+----------------------+
| max_heap_table_size | 67108864 |
+---------------------------------+----------------------+

mysql> show variables like 'tmp_table_size';
+---------------------------------+----------------------+
| Variable_name | Value |
+---------------------------------+----------------------+
| tmp_table_size | 67108864 |
+---------------------------------+----------------------+

顺便看一下这篇文章中的一段话:
http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html

Qcache_hits and Qcache_inserts shows the number of times a query was serviced from the cache and how many queries have been inserted into the cache. Low ratios of hits to inserts indicate little query reuse or a too-low setting of the query_cache_limit, which serves to govern the RAM devoted to each individual query cache entry. Large query result sets will require larger settings of this variable.

补充:
今天在手册上看到这段话

http://dev.mysql.com/doc/refman/5.1/en/out-of-memory.html
If you issue a query using the mysql client program and receive an error like the following one, it means that mysql does not have enough memory to store the entire query result:

所以我把我的所有存储过程都修改了。
因为里面的预处理语句没有清零。
经过测试。
比如:
里面用到
PREPARE S1 FROM @STMT;
...
一定要
SET @STMT = '';
不知道这个是不是根本原因。我会再次更新的。
再次证明这样做会减少这种情况。不过下午把所有存储过程修改了。
凡是普通连接的都改为LEFT JOIN 了。通过EXPLAIN建立了相关索引。
而且把版本换成了5.0.45。至于是否还是出现错误。还在继续关注中。。。目前没有任何错误。

这个问题貌似MYSQL官方解决了。
http://bugs.mysql.com/bug.php?id=31898

(0)

相关推荐

  • Mysql 错误问题汇总(不断更新中)

    1.Mysql errono 1005 : 主外键不是完全一致 , 请检查如下几点: a.字段是否存在 b.类型是否一致(注意unsigned , powerdesign 生成问题) c.数据库引擎是否一致 d.字符编码是否一致 e.windows平台下注意修改lower_case_table_names = 0, windows本身不区分文件大小写,改为0之后就区分了可能造成找不到引用的表 2.Mysql errono 121: 外键约束名称重复 3.记录 Mysql WorkBench 中单

  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库文件失败1012:不能读取系统表中的记录1020:记录已被其他用户修改1021:硬盘剩余空间不足,请加大硬盘可用空间1022:关键字重复,更改记录失败1023:关闭时发生错误1024:读文件错误1025:更改名字时发生错误1026:写文件错误1032:记录不存在1036

  • MySQL错误代码大全

    B.1. 服务器错误代码和消息 服务器错误信息来自下述源文件: · 错误消息信息列在share/errmsg.txt文件中."%d"和"%s"分别代表编号和字符串,显示时,它们将被消息值取代. · 错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义. · SQLSTATE值列在share/errmsg.txt文件中,用于生成include/s

  • mysql服务1067错误多种解决方案分享

    my.ini在MySQL的目录,于是在同事机器上拷贝了一个my.ini拿来修改,并单独放在一个地方作为备份.其内容如下: 复制代码 代码如下: #Uncomment or Add only the keys that you know how works. #Read the MySQL Manual for instructions [mysqld] basedir=d:/MySQL5.0/ #bind-address=127.0.0.1 datadir=d:/MySQL5.0/data #l

  • MySQL启动1053错误解决方法

    操作系统:windows7 mysql版本:5.5.22 www.jb51.net 在使用命令mysqld --install servicename --defaults-file='file_name'创建mysql服务时,系统 已提示创建服务成功,但是net start命令提示启动失败,并在services.msc中提示1053错误 解决办法: 在网上有人说是服务的"登录"选项卡里要设置成administrator: 也有人说是需要先把服务删除,在重新创建(可以先考虑这两方面):

  • mysql 提示INNODB错误的解决方法

    出现如下语句:The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working: 是mysql配置文件禁掉了这个选项! 关闭mysql数据库 在mysql的安装目录中找到my.ini文件 找到skip-innodb,在前面加上#号 保存,开启mysql数据库!搞定! 这也是开启Mysql数据库InnoDB功能的方法!!

  • MySql 安装时的1045错误

    解决办法1. 卸载重装,不设root密码,因为MySql默认密码为空. 解决办法2. 保持现在的密码,打开"MySQL Command Line Client"输入你的密码(安装时设的那个,如果密码不对可以试下空密码登录,有可能安装时密码设置无效).登录成功后输入命令: SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mysql'); 'mysql'是新设置的密码.修改密码成功后再配置Mysql就OK了. 附:Mysql关闭出错蜂鸣的办法

  • mysql常见错误集锦

    #1067 - Invalid default value for 'xxx' 当修改表中某字段的时候,出现了这个错误.显示:字段名称已存在错误.只好删除该字段,重新添加 UTF-8导入MYSQL中文无显示今天把本地的MYSQL数据导出到web service,结果发现中文字符全不见了.配置如下: 程序代码   导出数据库5.0.45.字符集:UTF-8     导入数据库数据库5.0.22,也是UTF-8 结果发现是phpadmin版本不兼容,以至于导出数据出现问题,使用mysqldump指令

  • 解决mysql 1040错误Too many connections的方法

    从官方文档知道linux上面编译安装的mysql默认的连接为100个,这样对于网站的需求来说是远远不够的. mysql官方告诉我们需要修改max_connections的值,那么我们怎么去修改呢?有两种方法 1.修改配置文件文件 修改/etc/my.cnf这个文件,在[mysqld]中新增max_connections=N,如果你没有这个文件请从编译源码中的support-files文件夹中复制你所需要的*.cnf文件为到/etc/my.cnf.我使用的是my-medium.cnf,中型服务器配

  • MySQL 1067错误解决方法集合

    1 安装MYSQL后更改了ROOT的密码后用  net startmysql  启动时我就遇到了这样的问题.使用以下命令后  c:\mysql\bin\mysqladmin-u root -p shutdown  再net start mysql就没有这个错误提示了! *************  2  MySQL的1067错误 Q:我的Mysql碰到了 1067 错误 错误信息为:  A system error has occurred.  System error 1067 has occ

  • mysql启动的error 2003和1067错误问题解决方法

    mysql安装好经常发现无法正常启动碰到最多的是error 2003的错误,以下为解决方法: mysqld -nt -remove mysqld -nt -install 重新启动mysql net start mysql 可能还会遇到服务1067错误的问题,原因大致有两个: (1)my.ini的basedir和datadir目录配置有问题,可如下面的例子修改: basedir=d:/MySQL5.0/#mysql安装位置 datadir=d:/MySQL5.0/data#数据存放位置 不过,一

  • mysql服务无法启动报错误1067解决方法(mysql启动错误1067 )

    试了谷歌到的几种方法,都没有解决,然后突然想起在启动apache的时候,iis的端口占用情况(因为我的apache也使用了80端口),所以  打开命令行 netstat -aon|findstr "3306" 结果显示 默默的在内心深处骂了一句"靠", 果然是端口占用,然后,顺藤摸瓜 tasklist|findstr "416" 结果显示 不得不联想到,优酷的攻城狮们的mysql数据库绝对不是使用的默认3306端口,然后杀掉explorer.ex

  • MySQL 1303错误的解决方法(navicat)

    1303-Can 't create a PROCEDURE from within another stored routine. 这个错误信息,比较难以理解,于是仔细检查存储过程内容,也没什么问题呀,代码如下: 复制代码 代码如下: CREATE PROCEDURE addData() begin declare v int default 0; while v < 4000000 do insert into TestMemory values (v,'ffffffffffffffffff

  • mysql 发生系统错误1067的解决方法

    解决方法如下: 1.先删除mysql服务 控制面板->管理工具->服务,先停止mysql服务 开始->运行->输入cmd->sc delete mysql 服务删除 2.修改my.ini 如果没将其创建(以下设置可以参考http://hi.baidu.com/chuyanwu/blog/item/98142a2e7d448d564ec2262c.html一般这个设置都不会错误) [mysqld] # set basedir to your installation path

随机推荐