chrisfah
Goto Top

MySQL Grösse eines Textfeldes

Hallo,
leider habe ich wieder ein Mysql Datenbank Problem:

Ich habe ein grosses Array mit mehreren tausend Textbausteinen. Dieses soll in der Datenbank gespeichert werden. Dazu wird das Array serialisiert (in PHP serialize()) und dann natürlich für die DB noch escaped.
Die Grösse dieser Daten können dabei durchaus bis zu 5000 KB betragen. Daher habe ich das Textfeld zuerst auf Mediumtext und dann auf Longtext gesetzt.
Leider verabschiedet sich der MySQL Server (derzeit noch auf XAMPP) mit folgender Fehlermeldung:

Warning: mysql_query(): MySQL server has gone away in D:\xampp\htdocs\.....
Warning: mysql_query(): Error reading result set's header in D:\xampp\htdocs\....
[MYSQL ERROR] 2006 - MySQL server has gone away

Ich konnte mit etwas Experimentieren herausfinden, daß der Fehler auftritt, sobald die gespeicherten Daten eine Grösse von 1.024KB übersteigen. Dabei sollte doch Mediumtext bis 16MB und Longtext bis 4 GB reichen.

Wer kann mir da weiterhelfen?

Danke im voraus,
Chris

Content-ID: 246113

Url: https://administrator.de/contentid/246113

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

ChrisFah
ChrisFah 10.08.2014 um 19:37:25 Uhr
Goto Top
Habe die Lösung gefunden:

Es war die max_allowed_packet Size, die die Abstürze verursacht hat.
Lösung:
Vor der eigentlichen "grossen" query kommt eine query, die die maximale Paketgrösse erhöht. Je nach Grösse der Daten habe ich das so gelöst:

PHP: $query = 'SET @@global.max_allowed_packet = '.(strlen($into) + 1024);

Das + 1024 ist nötig, da nur ein Vielfaches von 1024 erlaubt ist, sonst wird abgerundet. Und mit der Datengrösse + 1024 ist man auf der sicheren Seite.

Lg, Chris