Saya mencoba memasukkan beberapa data ke dalam database tetapi saya mendapat kesalahan ini "Kesalahan saat mengirim paket QUERY"
$insertDeta = $conPat->prepare("insert into table1(data) VALUES(:data)");
$insertDeta->bindParam(':data',$data);
$conPat->beginTransaction();
$insertDeta->execute();
$conPat->commit();
tetapi menurut saya masalahnya adalah ukuran data lebih dari 16MB.
tipe data kolom diatur sebagai longtext, yang menurut saya dapat menyimpan data sebesar 4GB.
Saya tidak tahu apakah PDO mengalami masalah dalam menjalankan query atau mentransfer data sebesar 16MB ke database.
Itu satu-satunya dugaan yang bisa saya buat karena mysql mungkin mengirim data dalam packets dan paket tidak dapat menampung data sebesar 16MB.
Anda menebak dengan benar bahwa MySQL memiliki batasan untuk ukuran data, Anda perlu memecah query Anda dalam kelompok kecil record atau Anda dapat mengubah max_allowed_packet Anda dengan menggunakan SET GLOBAL max_allowed_packet=524288000;
Anda mungkin juga mengalami error ini jika variabel wait_timeout
terlalu rendah.
Jika demikian, Anda dapat mengaturnya lebih tinggi seperti itu:
SET GLOBAL wait_timeout=10;
Ini adalah solusi untuk kesalahan yang sama dalam kasus saya.
Anda tidak bisa memiliki klausa WHERE
dalam pernyataan INSERT
.
insert into table1(data) VALUES(:data) where sno ='45830'
Seharusnya
insert into table1(data) VALUES(:data)
Update: Anda telah menghapusnya dari kode Anda (saya asumsikan Anda salah menyalin kode). Anda ingin meningkatkan ukuran paket yang diizinkan:
SET GLOBAL max_allowed_packet=32M
Ubah 32M
(32 megabyte) ke atas/bawah sesuai kebutuhan. Berikut ini adalah tautan ke dokumentasi MySQL tentang subjek tersebut..