Warning: Got a packet bigger than ‹max_allowed_packet›


"Warning: Got a packet bigger than 'max_allowed_packet' bytes query: INSERT INTO watchdog"

Irgendwie wurde ich nicht schlau aus dieser Meldung, habe aber dann rausgefunden worum es sich handelt.

Was ist max_allowed_packet? Ich bin dem nicht ganz auf den Grund gegangen, aber es geht irgendwie darum, wenn irgend ein serialisierter String (oder Bild oder was weiss ich) in der Datenbank gespeichert wird und dadurch diesen max_allowed_packet überschreittet. Dieser ist bis MySQL 3.23 auf maximal 16MB beschränkt, wurde danach auf 1GB erhöht (will aber nicht heissen, dass dieser auf allen Hostings so hoch ist.

Bei mir trat das Problem auf, als ich via Devel modul ein dsm($rows) Befehl aufgerufen habe. Das Problem war, dass $rows ein Array war, welches 1000 weitere Arrays hielt. dsm() funktioniert so, dass es in irgend einer Tabelle gespeichert wird und dann auf der nächsten Seite ausgeben wird. Anscheinend war der Wert jedoch zu gross, was zu dieser Fehlermeldung führt.

Auf drupalcenter gibt es auch eine Diskussion darüber.

Das mag jetzt nicht das beste Post sein, aber es hilft vielleicht, in die richtige Richtung zu zeigen.