찾다

 >  Q&A  >  본문

특정 쿼리를 실행하는 동안 연결이 중단되었습니다.

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;

P粉148782096P粉148782096245일 전429

모든 응답(1)나는 대답할 것이다

  • P粉322319601

    P粉3223196012024-03-23 09:27:53

    해결됨: AWS 인스턴스의 버전을 NAS와 동일한 버전(8.0.28)으로 업데이트했는데 이제 쿼리가 올바르게 실행됩니다.

    회신하다
    0
  • 취소회신하다