Mysql Error Code : 1436 Thread stack overrun

 更新时间:2011年07月02日 23:50:36   投稿:mdxy-dxy  
I meet with the error while calling stored procedures from the MySql in my Mac system server. It similar as the description below

ERRNO: 256 
TEXT: SQLSTATE[HY000]: General error: 1436 Thread stack overrun: 4904 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld -O thread_stack=#' to specify a bigger stack. 

According to the MySQL manual “The default (192KB) is large enough for normal operation. If the thread stack size is too small, it limits the complexity of the SQL statements that the server can handle, the recursion depth of stored procedures, and other memory-consuming actions” .

To resolve this issue you need to change the default value of parameter 'thread_stack' in /etc/my.cnf  in your MySQL configuration file. I use the XAMPP for php/mysql development. 

Once you set this value you need to restart MySQL as this value cannot be set dynamically.

you maybe also encounter with the message when you try to modify the my.cnf

"Cannot open file for writing: Permission denied"

We will try to use the 'chmod' instruction to change permission as usually. I seldom take the concrete permission into consideration, so I use always use the 'chmod 777'. but it resulted in another errors when I use the phpmyadmin, another tools included in XAMPP, after running 'chmod 777'.

After googling it, I get this file (my.cnf) permissions has to be 600. I change its permission and it works well now.

bug info

报错信息:
java.sql.SQLException: Thread stack overrun: 5456 bytes used of a 131072 byte stack, and 128000 bytes needed. Use 'mysqld --thread_stack=#' to specify a bigger stack.

官方相应信息:

The default (192KB) is large enough for normal operation. If the thread stack size is too small, it limits the complexity of the SQL statements that the server can handle, the recursion depth of stored procedures, and other memory-consuming actions

可以使用

show variables where `variable_name` = 'thread_stack';

查询当前数据库的默认线程栈的大小,一般情况下都能正常使用,但是当查询语句或者存储过程复杂时会报Thread stack overrun错误,此时只要修改默认配置就可以。

解决

windows: 修改mysql安装目录下的my-small.ini或者my.ini设置为256k,或者更大,然后重启服务

[mysqld]
thread_stack = 256k
linux: 同样要修改配置文件,但是!!!,不是安装目录下的配置文件,是/etc/my.cnf,只有这个文件才能生效,然后重启服务service mysql restart

[mysqld]
thread_stack = 256k

其实针对32位系统,32G内存,一般设置为512K即可,据国外网站看到的,如果是64位的系统可以适当增加,其实够用就好了,没必须刚开始设置的就很大。

相关文章

  • Mysql 主从集群同步延迟的问题解决

    Mysql 主从集群同步延迟的问题解决

    本文主要介绍了Mysql 主从集群同步延迟的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • MySQL数据库varchar的限制规则说明

    MySQL数据库varchar的限制规则说明

    本文我们主要介绍了MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规则进行了说明,希望能够对您有所帮助。
    2011-08-08
  • mysql5.5与mysq 5.6中禁用innodb引擎的方法

    mysql5.5与mysq 5.6中禁用innodb引擎的方法

    这篇文章主要介绍了mysql5.5中禁用innodb引擎的方法,需要的朋友可以参考下
    2014-04-04
  • mysql 5.7.18 Installer安装下载图文教程

    mysql 5.7.18 Installer安装下载图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.18 Installer安装下载图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Mysql version can not be less than 4.1 出错解决办法

    Mysql version can not be less than 4.1 出错解决办法

    这篇文章主要介绍了Mysql version can not be less than 4.1 解决办法的相关资料,需要的朋友可以参考下
    2016-10-10
  • RHEL6.5编译安装MySQL5.6.26教程

    RHEL6.5编译安装MySQL5.6.26教程

    这篇文章主要介绍了RHEL6.5编译安装MySQL5.6.26教程的相关资料,需要的朋友可以参考下
    2015-10-10
  • windows 64位下mysql8.0.25安装配置教程(最详细!)

    windows 64位下mysql8.0.25安装配置教程(最详细!)

    之前一直在用 5.7 版本,竟然一下子跳到 8.0了,下面这篇文章主要给大家介绍了关于在windows 64位下mysql8.0.25安装配置教程,文章通过图文介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • MySql command line client命令操作大全

    MySql command line client命令操作大全

    这篇文章主要介绍了MySql command line client命令操作大全,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01
  • mysql中tonumber函数使用及注意事项

    mysql中tonumber函数使用及注意事项

    在MySQL中,没有直接的TO_NUMBER函数,但可以通过CAST或CONVERT实现字符串到数字的转换,转换前需明确数据类型,了解转换语法,并注意错误处理、空值处理、格式合规性和精度问题,本文介绍mysql中tonumber函数使用及注意事项,感兴趣的朋友一起看看吧
    2025-02-02
  • MySQL关联查询优化实现方法详解

    MySQL关联查询优化实现方法详解

    在数据库的设计中, 我们通常都是会有很多张表 , 通过表与表之间的关系建立我们想要的数据关系, 所以在多张表的前提下, 多表的关联查询就尤为重要,这篇文章主要介绍了MySQL关联查询优化
    2022-11-11

最新评论