Mysql Error Code : 1436 Thread stack overrun
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
報(bào)錯(cuò)信息:
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.
官方相應(yīng)信息:
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';
查詢當(dāng)前數(shù)據(jù)庫(kù)的默認(rèn)線程棧的大小,一般情況下都能正常使用,但是當(dāng)查詢語(yǔ)句或者存儲(chǔ)過(guò)程復(fù)雜時(shí)會(huì)報(bào)Thread stack overrun錯(cuò)誤,此時(shí)只要修改默認(rèn)配置就可以。
解決
windows: 修改mysql安裝目錄下的my-small.ini或者my.ini設(shè)置為256k,或者更大,然后重啟服務(wù)
[mysqld]
thread_stack = 256k
linux: 同樣要修改配置文件,但是?。?!,不是安裝目錄下的配置文件,是/etc/my.cnf,只有這個(gè)文件才能生效,然后重啟服務(wù)service mysql restart
[mysqld]
thread_stack = 256k
其實(shí)針對(duì)32位系統(tǒng),32G內(nèi)存,一般設(shè)置為512K即可,據(jù)國(guó)外網(wǎng)站看到的,如果是64位的系統(tǒng)可以適當(dāng)增加,其實(shí)夠用就好了,沒(méi)必須剛開(kāi)始設(shè)置的就很大。
- MySQL性能優(yōu)化配置參數(shù)之thread_cache和table_cache詳解
- mysql -參數(shù)thread_cache_size優(yōu)化方法 小結(jié)
- Mysql優(yōu)化調(diào)優(yōu)中兩個(gè)重要參數(shù)table_cache和key_buffer
- MySQL高速緩存啟動(dòng)方法及參數(shù)詳解(query_cache_size)
- MySQL性能優(yōu)化之table_cache配置參數(shù)淺析
- mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
- 優(yōu)化mysql之key_buffer_size設(shè)置
- mysql Key_buffer_size參數(shù)的優(yōu)化設(shè)置
- MySQL thread_stack連接線程的優(yōu)化
相關(guān)文章
mysql中find_in_set()函數(shù)的使用詳解
這篇文章主要介紹了mysql中find_in_set()函數(shù)的使用,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05簡(jiǎn)單解決Windows中MySQL的中文亂碼與服務(wù)啟動(dòng)問(wèn)題
這篇文章主要介紹了Windows中MySQL的中文亂碼與服務(wù)啟動(dòng)問(wèn)題,如果程序沒(méi)有特殊需要?jiǎng)t建議MySQL盡量默認(rèn)設(shè)為UTF-8格式編碼,需要的朋友可以參考下2016-03-03MySQL數(shù)據(jù)庫(kù)之聯(lián)合查詢?union
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之聯(lián)合查詢?union,聯(lián)合查詢就是將多個(gè)查詢結(jié)果的結(jié)果集合并到一起,字段數(shù)不變,多個(gè)查詢結(jié)果的記錄數(shù)合并,下文詳細(xì)介紹需要的小伙伴可以參考一下2022-06-06禁止mysql做域名解析(解決遠(yuǎn)程訪問(wèn)mysql時(shí)很慢)
當(dāng)遠(yuǎn)程訪問(wèn)mysql時(shí),mysql會(huì)解析域名,會(huì)導(dǎo)致訪問(wèn)速度很慢2010-04-04深入理解MySQL數(shù)據(jù)類型的選擇優(yōu)化
這篇文章主要介紹了深入理解MySQL數(shù)據(jù)類型的選擇優(yōu)化,MySQL數(shù)據(jù)類型是定義列中可以存儲(chǔ)什么數(shù)據(jù)以及該數(shù)據(jù)實(shí)際怎樣存儲(chǔ)的基本規(guī)則,正確的選擇數(shù)據(jù)庫(kù)字段的字段類型對(duì)于數(shù)據(jù)庫(kù)性能有很大的影響2022-08-08Mysql5.7.18版本(二進(jìn)制包安裝)自定義安裝路徑教程詳解
這篇文章主要介紹了Mysql5.7.18版本(二進(jìn)制包安裝)自定義安裝路徑教程詳解,需要的朋友可以參考下2017-07-07