Έχω ένα πρόβλημα με τα πεδία 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 και είστε έτοιμοι.
Ανατρέξτε στην τεκμηρίωση για περισσότερες πληροφορίες.
Η μεταβλητή max_allowed_packet μπορεί να οριστεί συνολικά με την εκτέλεση ενός ερωτήματος.
Ωστόσο, αν δεν την αλλάξετε στο αρχείο my.ini
(όπως πρότεινε ο dragon112), η τιμή θα επανέλθει κατά την επανεκκίνηση του διακομιστή, ακόμη και αν την ορίσετε συνολικά.
Για να αλλάξετε το μέγιστο επιτρεπόμενο πακέτο για όλους σε 1GB μέχρι την επανεκκίνηση του διακομιστή:
SET GLOBAL max_allowed_packet=1073741824;
Αυτό το σφάλμα οφείλεται στο ότι τα δεδομένα σας περιέχουν μεγαλύτερη τιμή από την καθορισμένη.
Απλά γράψτε την max_allowed_packed=500M
ή μπορείτε να υπολογίσετε ότι 500*1024k και να το χρησιμοποιήσετε αυτό αντί για 500M αν θέλετε.
Τώρα απλά επανεκκινήστε τη MySQL.