这几天碰到这个错误。
至于我改的这几个值是否是正确的解决方法,目前还不知道。先贴出来。
若是过一段时间我仍是没有更新,那之后同志们都参考吧 。
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 |
+---------------------------------+----------------------+
顺便看一下这篇文章中的一段话:
[url]http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html[/url]
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.
补充:
今天在手册上看到这段话
[url]http://dev.mysql.com/doc/refman/5.1/en/out-of-memory.html[/url]
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 = '';
不知道这个是否是根本缘由。我会再次更新的。