问题
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.youkuaiyun.com/qq_40741855/article/details/89179029