max_allowed_packetのサイズを変更する方法

MySQLデータベースのBLOBフィールドで問題が発生しています。約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]1変数は、クエリを実行することでグローバルに設定できます。

しかし、(dragon112さんが提案したように) my.ini ファイルで変更しないと、グローバルに設定したとしても、サーバーの再起動時に値がリセットされてしまいます。

サーバーが再起動するまでの間、全員の最大許容パケットを1GBに変更するには。

SET GLOBAL max_allowed_packet=1073741824;
解説 (10)

このエラーは、データが設定値よりも大きく含まれていることが原因です。

ただ、max_allowed_packed=500Mと書いてください。 または、500*1024k を計算して、500M の代わりに使用することもできます。

その後、MySQLを再起動してください。

解説 (2)