인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

류재안님의 프로필 이미지
류재안

작성한 질문수

도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기

스토리 그 자체, 실적 테이블

[스토리 그 자체, 실적 테이블](9:51)max_recursive_iterations

작성

·

377

·

수정됨

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 기반 + 워크벤치를 개발환경으로써 고려 중입니다.)

류재안님의 프로필 이미지
류재안

작성한 질문수

질문하기