Beim Ausführen einer bestimmten Abfrage ist eine Verbindungsunterbrechung aufgetreten
P粉148782096
P粉148782096 2024-03-22 10:12:35
0
1
426

Ich habe während einer Anfrage an MySQL, das auf einer AWS-Instanz gehostet wird, die Meldung „Verbindung zum MySQL-Server 2013 verloren“ erhalten. Die folgende Abfrage ist die einzige, die diesen Fehler verursacht (andere Abfragen laufen einwandfrei), und diese Abfrage wird ohne Probleme auf einem Synology Docker-Container ausgeführt, auf dem MySQL ausgeführt wird. Das einzig Einzigartige, was ich gefunden habe, ist, dass diese Abfrage einen CTE verwendet, während die anderen erfolgreich ausgeführten Abfragen dies nicht tun. AWS MySQL ist 8.0.23 und NAS Docker MySQL ist 8.0.28. Ich habe die ersten Dinge wie maximale Verbindungen, Zeitüberschreitungen usw. überprüft und die AWS-Instanz verwendet dieselben oder höhere Werte als die Einstellungen auf der NAS-Docker-Instanz. Ich habe auch versucht, kleinere Datentabellen zu verwenden und die Datentabellen neu zu organisieren, um die Möglichkeit einer Datenbeschädigung auszuschließen. Ich habe ein paar Tage lang gesucht, aber keine Hinweise darauf gefunden, wo das Problem liegt. Hat hier jemand einen Vorschlag, wo ich als nächstes hingehen soll? Danke!

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粉148782096
P粉148782096

Antworte allen(1)
P粉322319601

已解决:我继续将 AWS 实例上的版本更新为与 NAS (8.0.28) 相同的版本,并且查询现在可以正确运行。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage