Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceed

問題

MySQL 執行存儲過程報錯,提示Recursive limit 0 (as set by the max_sp_recursion_depth variable) was exceed

分析

根據英文提示,遞歸深度限制0,也就是說不允許遞歸。查看存儲過程代碼,發現其中確實有遞歸調用當前存儲過程的語句。

解決

方法一

修改存儲過程,去掉代碼中的遞歸調用。

方法二

設置max_sp_recursion_depth變量

max_sp_recursion_depth 變量表示存儲過程可以遞歸調用的次數,默認值是 0,即禁用存儲過程遞歸。最大值是 255。啓用存儲過程遞歸會增加線程棧空間的需求。

在存儲過程中增加如下代碼:

SET @@max_sp_recursion_depth = 10;

或者在 MySQL 中執行如下命令設置全局變量:

SET global max_sp_recursion_depth = 10;

或者在 MY.INI 中增加如下參數:

max_sp_recursion_depth = 10

參考

  • https://blog.csdn.net/qq_40741855/article/details/89179029
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章