AWS 인스턴스에서 호스팅되는 MySQL에 쿼리하는 동안 2013년 MySQL 서버 연결 끊김 메시지를 받았습니다. 아래 쿼리는 이 오류를 발생시키는 유일한 쿼리이며(다른 쿼리는 정상적으로 실행됨), 이 쿼리는 MySQL을 실행하는 Synology Docker 컨테이너에서 문제 없이 실행됩니다. 내가 찾은 유일한 독특한 점은 이 쿼리는 CTE를 사용하지만 성공적으로 실행되는 다른 쿼리는 CTE를 사용하지 않는다는 것입니다. AWS MySQL은 8.0.23이고 NAS Docker MySQL은 8.0.28입니다. 최대 연결 수, 시간 초과 등을 먼저 확인해 보았는데, AWS 인스턴스는 NAS Docker 인스턴스의 설정과 동일하거나 더 높은 값을 사용하고 있습니다. 또한 데이터 손상 가능성을 제거하기 위해 더 작은 데이터 테이블을 사용하고 데이터 테이블을 재구성해 보았습니다. 며칠 동안 검색해 보았지만 문제가 무엇인지에 대한 힌트를 찾을 수 없습니다. 여기에 제가 다음에 어디로 가야 할지 제안해 주실 분 계신가요? 감사해요!
USE ce_test; SET @lowlim = 0; SET @upplim = 0; with orderedList AS ( SELECT 576_VMC_Sol_Savings_Pct, ROW_NUMBER() OVER (ORDER BY 576_VMC_Sol_Savings_Pct) AS row_n FROM vmctco ), quartile_breaks AS ( SELECT 576_VMC_Sol_Savings_Pct, ( SELECT 576_VMC_Sol_Savings_Pct AS quartile_break FROM orderedList WHERE row_n = FLOOR((SELECT COUNT(*) FROM vmctco)*0.75) ) AS q_three_lower, ( SELECT 576_VMC_Sol_Savings_Pct AS quartile_break FROM orderedList WHERE row_n = FLOOR((SELECT COUNT(*) FROM vmctco)*0.75) + 1 ) AS q_three_upper, ( SELECT 576_VMC_Sol_Savings_Pct AS quartile_break FROM orderedList WHERE row_n = FLOOR((SELECT COUNT(*) FROM vmctco)*0.25) ) AS q_one_lower, ( SELECT 576_VMC_Sol_Savings_Pct AS quartile_break FROM orderedList WHERE row_n = FLOOR((SELECT COUNT(*) FROM vmctco)*0.25) + 1 ) AS q_one_upper FROM orderedList ), iqr AS ( SELECT 576_VMC_Sol_Savings_Pct, ( (SELECT MAX(q_three_lower) FROM quartile_breaks) + (SELECT MAX(q_three_upper) FROM quartile_breaks) )/2 AS q_three, ( (SELECT MAX(q_one_lower) FROM quartile_breaks) + (SELECT MAX(q_one_upper) FROM quartile_breaks) )/2 AS q_one, 1.5 * (( (SELECT MAX(q_three_lower) FROM quartile_breaks) + (SELECT MAX(q_three_upper) FROM quartile_breaks) )/2 - ( (SELECT MAX(q_one_lower) FROM quartile_breaks) + (SELECT MAX(q_one_upper) FROM quartile_breaks) )/2) AS outlier_range FROM quartile_breaks ) SELECT MAX(q_one) OVER () - MAX(outlier_range) OVER () AS lower_limit, MAX(q_three) OVER () + MAX(outlier_range) OVER () AS upper_limit INTO @lowlim, @upplim FROM iqr LIMIT 1; SELECT @lowlim, @upplim;
해결됨: AWS 인스턴스의 버전을 NAS와 동일한 버전(8.0.28)으로 업데이트했는데 이제 쿼리가 올바르게 실행됩니다.