Saya menerima mesej pelayan Hilang Sambungan ke MySQL 2013 semasa pertanyaan kepada MySQL yang dihoskan pada tika AWS. Pertanyaan di bawah adalah satu-satunya yang menyebabkan ralat ini (pertanyaan lain berjalan dengan baik), dan pertanyaan ini berjalan tanpa masalah pada bekas Synology Docker yang menjalankan MySQL. Satu-satunya perkara unik yang saya dapati ialah pertanyaan ini menggunakan CTE manakala pertanyaan lain yang berjaya menjalankan tidak. AWS MySQL ialah 8.0.23 dan NAS Docker MySQL ialah 8.0.28. Saya telah menyemak perkara pertama seperti sambungan maks, tamat masa, dsb. dan tika AWS menggunakan nilai yang sama atau lebih tinggi daripada tetapan pada tika NAS Docker. Saya juga telah mencuba menggunakan jadual data yang lebih kecil dan menyusun semula jadual data untuk menghapuskan kemungkinan rasuah data. Saya telah mencari selama beberapa hari tetapi tidak menemui sebarang petunjuk tentang masalahnya. Adakah sesiapa di sini mempunyai sebarang cadangan tentang ke mana saya harus pergi seterusnya? Terima kasih!
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;
Diselesaikan: Saya meneruskan dan mengemas kini versi pada tika AWS kepada versi yang sama seperti NAS (8.0.28) dan pertanyaan kini berjalan dengan betul.