Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memperbaiki 'Sambungan yang hilang ke pelayan MySQL semasa pertanyaan' Ralat Semasa Memproses Set Data Besar?

Bagaimana untuk Memperbaiki 'Sambungan yang hilang ke pelayan MySQL semasa pertanyaan' Ralat Semasa Memproses Set Data Besar?

Susan Sarandon
Susan Sarandonasal
2025-01-04 05:38:38853semak imbas

How to Fix

Cara Mengendalikan Ralat "Hilang sambungan ke pelayan MySQL semasa pertanyaan"

Apabila bekerja dengan set data yang sangat besar, adalah perkara biasa untuk menghadapi ralat "Sambungan hilang ke pelayan MySQL semasa pertanyaan." Ralat ini berlaku semasa lelaran baris data, yang membawa kepada kehilangan sambungan dan mengaburkan kedudukan pertanyaan SQL yang terakhir dilaksanakan.

Sampel Kod Yang Diperbaik

Untuk menangani isu ini, sampel kod berikut menggunakan SSCursor daripada pustaka MySQLdb, yang menyokong penyambungan semula automatik apabila ditanya kegagalan:

import MySQLdb

class DB:
    conn = None

    def connect(self):
        self.conn = MySQLdb.connect(
            "hostname", "user", "*****", "some_table", cursorclass=MySQLdb.cursors.SSCursor
        )

    def query(self, sql):
        cursor = self.conn.cursor()
        cursor.execute(sql)
        return cursor

#
db = DB()
sql = "SELECT bla FROM foo"
data = db.query(sql)

for row in data:
    do_something(row)

Petua Penyelesaian Masalah

Jika ralat berterusan, rujuk dokumentasi MySQL tentang ralat khusus ini. Punca yang mungkin termasuk:

  • Pertanyaan tidak betul atau bersaiz besar: Pertanyaan yang terlalu besar atau mengandungi ralat boleh mencetuskan penutupan sambungan. Meningkatkan pembolehubah max_allowed_packet pelayan dan melaraskan saiz paket sisi klien mungkin menyelesaikan masalah ini.
  • Amaran: Memulakan MySQL dengan pilihan --log-warnings=2 menjana fail log yang mengandungi maklumat tentang ralat terputus. Ini boleh memberikan gambaran lanjut tentang punca masalah.

Atas ialah kandungan terperinci Bagaimana untuk Memperbaiki 'Sambungan yang hilang ke pelayan MySQL semasa pertanyaan' Ralat Semasa Memproses Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn