mysql-girl-black-halter-topI came across a nasty little bug in my image upload to MySQL blob in base 64 encode function the other day – basically the database was spitting back the following error to me:

Error code: 1153 – Got a packet bigger than ‘max_allowed_packet’ bytes

So of course I looked it up.

It turns out that MySQL views a single SQL statement as a communication packet, with a built in limit of 1GB. However, servers usually have a set maximum packet size they are allowed to accept and clients a maximum packet size they are allowed to send, both of which is controlled by a variable called max_allowed_packet. If it receives a packet bigger than this limit, the server will spit back a 1153 error and close the connection.

If you wish to check what your current maximum packet size is, run the following query:

SHOW VARIABLES LIKE ‘max_allowed_packet’

Of course, you would also want to increase these limits at some point in time, something which is easily achieved like so:

To increase a client program’s default, run: shell> mysql –max_allowed_packet=32MB.

To increase a server’s default, run: shell> mysqld –max_allowed_packet=16M.

Note that this is fairly safe to increase this value as memory is allocated only when needed. So now you know! :)