我正在使用 MySQL 8.0.36,我有一个递归查询来向表中插入 500 万行。我收到错误
ERROR 3636 (HY000): Recursive query aborted after 1001 iterations. Try increasing @@cte_max_recursion_depth to a larger value.
然后我运行查询SET GLOBAL cte_max_recursion_depth=10000000;
但它似乎没有效果。问题是什么?
我正在使用 MySQL 8.0.36,我有一个递归查询来向表中插入 500 万行。我收到错误
ERROR 3636 (HY000): Recursive query aborted after 1001 iterations. Try increasing @@cte_max_recursion_depth to a larger value.
然后我运行查询SET GLOBAL cte_max_recursion_depth=10000000;
但它似乎没有效果。问题是什么?
设置全局选项不会影响当前会话。打开一个新会话以继承对全局变量的最近更改。
如果您使用 更改选项
SET GLOBAL
,然后重新启动 MySQL 服务器,这些设置将重置为您配置的任何内容my.cnf
,或者默认值。参考手册:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_cte_max_recursion_depth
检查该选项的范围。它说全局,会话。这意味着该选项允许在全局级别或会话级别进行更改。您可以指定 SESSION:
或者只是省略范围限定符。它默认为会话范围。
但是,我要提醒您,将递归深度设置得这么高可能不是一个好的解决方案。它将使用大量资源。