Ich habe versucht, einige Daten in die Datenbank einzufügen, aber ich bekam diese Fehlermeldung "Error while sending QUERY packet"
$insertDeta = $conPat->prepare("insert into table1(data) VALUES(:data)");
$insertDeta->bindParam(':data',$data);
$conPat->beginTransaction();
$insertDeta->execute();
$conPat->commit();
aber ich denke, das Problem ist, dass die Größe der Daten über 16MB ist.
Der Datentyp der Spalte ist auf Langtext eingestellt, der meines Erachtens Daten bis zu einer Größe von 4 GB speichern kann.
Ich weiß nicht, ob PDOs Probleme beim Ausführen der Abfrage oder beim Übertragen von 16 MB Daten an die Datenbank hat.
Das ist die einzige Vermutung, die ich anstellen kann, da mysql die Daten möglicherweise in Paketen sendet und das Paket keine Daten mit einer Größe von 16MB aufnehmen kann.
Sie haben richtig erraten MySQL haben Begrenzung für die Größe der Daten, müssen Sie Ihre Abfrage in kleine Gruppe von Datensätzen zu brechen oder Sie können Ihre max_allowed_packet ändern, indem Sie SET GLOBAL max_allowed_packet=524288000;
Dieser Fehler kann auch auftreten, wenn die Variable wait_timeout
zu niedrig ist.
Wenn dies der Fall ist, können Sie sie höher setzen:
SET GLOBAL wait_timeout=10;
Dies war die Lösung für den gleichen Fehler in meinem Fall.
Sie können die WHERE
-Klausel nicht in einer INSERT
-Anweisung verwenden.
insert into table1(data) VALUES(:data) where sno ='45830'
Sollte sein
insert into tabelle1(daten) VALUES(:daten)
Aktualisierung: Sie haben das aus Ihrem Code entfernt (ich nehme an, Sie haben den Code falsch hineinkopiert). Sie möchten die zulässige Paketgröße erhöhen:
SET GLOBAL max_allowed_packet=32M
Ändern Sie die 32M
(32 Megabytes) nach Bedarf nach oben/unten. Hier ist ein Link zur MySQL-Dokumentation zu diesem Thema