Estou usando o MySQL 8.0.36, tenho uma consulta recursiva para inserir 5 milhões de linhas em uma tabela. eu recebo o erro
ERROR 3636 (HY000): Recursive query aborted after 1001 iterations. Try increasing @@cte_max_recursion_depth to a larger value.
então executei a consulta. SET GLOBAL cte_max_recursion_depth=10000000;
No entanto, parecia não ter efeito. Qual é o problema?
A configuração de opções globais não afeta a sessão atual. Abra uma nova sessão para herdar uma alteração recente em uma variável global.
Se você alterar uma opção
SET GLOBAL
e reiniciar o servidor MySQL, essas configurações serão redefinidas para o que estiver configurado em seumy.cnf
, ou então para os padrões.Consulte o manual: https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_cte_max_recursion_profundidade
Verifique o escopo dessa opção. Diz Global, Sessão . Isso significa que a opção permite alterações no nível global ou no nível da sessão. Você pode especificar SESSION:
Ou apenas omita o qualificador de escopo. O padrão é o escopo da sessão.
No entanto, eu alertaria que definir a profundidade de recursão tão alta provavelmente não é uma boa solução. Usará muitos recursos.