問題
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