Πώς να αλλάξετε το μέγιστο επιτρεπόμενο μέγεθος πακέτου

Έχω ένα πρόβλημα με τα πεδία BLOB στη βάση δεδομένων MySQL μου - όταν ανεβάζω αρχεία μεγαλύτερα από περίπου 1MB λαμβάνω ένα σφάλμα Πακέτα μεγαλύτερα από το max_allowed_packet δεν επιτρέπονται.

Ακολουθεί αυτό που δοκίμασα:

Στο MySQL Query Browser έκανα μια αναζήτηση show variables like 'max_allowed_packet' η οποία μου έδωσε 1048576.

Στη συνέχεια εκτελώ το ερώτημα set global max_allowed_packet=33554432 ακολουθούμενο από show variables like 'max_allowed_packet' - μου δίνει 33554432 όπως αναμενόταν.

Αλλά όταν κάνω επανεκκίνηση του διακομιστή MySQL, ως δια μαγείας επιστρέφει στο 1048576. Τι κάνω λάθος εδώ;

Ερώτηση μπόνους, είναι δυνατόν να συμπιέσω ένα πεδίο BLOB;

Λύση

Αλλάξτε το αρχείο my.ini ή ~/.my.cnf συμπεριλαμβάνοντας τη μία γραμμή στο τμήμα [mysqld] ή [client] του αρχείου σας:

max_allowed_packet=500M

στη συνέχεια επανεκκινήστε την υπηρεσία MySQL και είστε έτοιμοι.

Ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.

Σχόλια (11)

Η μεταβλητή max_allowed_packet μπορεί να οριστεί συνολικά με την εκτέλεση ενός ερωτήματος.

Ωστόσο, αν δεν την αλλάξετε στο αρχείο my.ini (όπως πρότεινε ο dragon112), η τιμή θα επανέλθει κατά την επανεκκίνηση του διακομιστή, ακόμη και αν την ορίσετε συνολικά.

Για να αλλάξετε το μέγιστο επιτρεπόμενο πακέτο για όλους σε 1GB μέχρι την επανεκκίνηση του διακομιστή:

SET GLOBAL max_allowed_packet=1073741824;
Σχόλια (10)

Αυτό το σφάλμα οφείλεται στο ότι τα δεδομένα σας περιέχουν μεγαλύτερη τιμή από την καθορισμένη.

Απλά γράψτε την max_allowed_packed=500M ή μπορείτε να υπολογίσετε ότι 500*1024k και να το χρησιμοποιήσετε αυτό αντί για 500M αν θέλετε.

Τώρα απλά επανεκκινήστε τη MySQL.

Σχόλια (2)