작성
·
342
·
수정됨
1
안녕하세요.
heidiSQL 또는 mysql워크벤치이든 접속을 해서
SET SESSION max_recursive_iterations = 10000 ;
를 실행해보면 해당 variables 이 없다고 나오는데요.
"Error Code: 1193. Unknown system variable 'max_recursive_iterations' "
혹시 인스톨하는 버전에 따라서 제공되는 시스템변수들이 달라지는 걸까요??
mysql 은 윈도우용으로 버전은 8.0.36을 사용중입니다.
답변 2
1
안녕하세요, 인프런 AI 인턴입니다.
님께서 마주치신 문제는 MySQL에서 max_recursive_iterations
시스템 변수에 대한 것인데, 해당 변수는 MySQL에서 기본적으로 제공하는 변수가 아닙니다. 그래서 Error Code: 1193. Unknown system variable 'max_recursive_iterations'
라는 오류 메시지가 발생합니다. 대신, 재귀 쿼리에 대한 최대 반복 횟수를 설정하고자 한다면 cte_max_recursion_depth
라는 변수를 사용할 수 있습니다. 이는 MySQL 8.0.19 버전부터 추가된 옵션으로, 공식 문서나 MySQL 설정 파일에서 해당 변수를 찾을 수 있습니다.
MySQL에서 시스템 변수를 확인하고자 할 때는 다음과 같은 쿼리를 사용할 수 있습니다.
SHOW VARIABLES LIKE 'cte_max_recursion_depth';
위 쿼리를 실행하면 현재 설정된 cte_max_recursion_depth
값과 관련 정보를 확인할 수 있습니다.
최대 재귀 횟수를 설정하려면, 예를 들어 10000으로 설정하고자 한다면 다음과 같이 쿼리를 실행할 수 있습니다.
SET SESSION cte_max_recursion_depth = 10000;
이 설정은 현재 세션에만 적용되며, MySQL 서버 전체에 적용하고 싶다면 GLOBAL
키워드를 사용하여 다음과 같이 설정할 수 있습니다.
SET GLOBAL cte_max_recursion_depth = 10000;
단, GLOBAL
설정을 변경하기 위해서는 해당 권한이 필요합니다.
0
안녕하세요 류재안 님.
강좌 생성 시 사용한 DB와 버전이 MariaDB 10.x이상이라 MySQL8.x과 다른 설정값을 가지고 있습니다.
앞서 인프런 AI 인턴님의 답변과 같이 cte_max_recursion_depth 값을 조정하여 사용할 수 있습니다.
SHOW VARIABLES LIKE 'cte_max_recursion_depth';
기본값은 1000 이므로 교안과 같이 100000 으로 변경하여 사용하시면 됩니다.
참고로, 인스톨하는 버전에 따라서 제공되는 시스템변수들은 업그레이드 내용에 따라 충분히 변할 수 있습니다. 하지만 해당 경우는 MariaDB와 MySQL이 서로 다른 길을(제품군) 가고 있는데서 발생한 이종 DB 제품 간 시스템 변수명 차이입니다.
이러한 부분은 두 DB가 뿌리가 같지만 완전히 다른 것도, 또 똑같은 것도 아니라 뭐라 정확한 설명을 드리기가 쉽지 않습니다. 같은 목적과 용도인데 제품이 달라 발생하는 문제가 아닐까 합니다.
(향후 일부 강좌들에서는 MySQL8.x 기반 + 워크벤치를 개발환경으로써 고려 중입니다.)