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フィールドを圧縮することは可能ですか?
289
3
my.ini
または
~/.my.cnfファイルの
[mysqld]または
[client]` セクションの下の一行を含めて変更してください。その後、MySQLサービスを再起動すれば完了です。
詳細はドキュメントを参照してください。
max_allowed_packet]1変数は、クエリを実行することでグローバルに設定できます。
しかし、(dragon112さんが提案したように)
my.ini
ファイルで変更しないと、グローバルに設定したとしても、サーバーの再起動時に値がリセットされてしまいます。サーバーが再起動するまでの間、全員の最大許容パケットを1GBに変更するには。
このエラーは、データが設定値よりも大きく含まれていることが原因です。
ただ、
max_allowed_packed=500M
と書いてください。 または、500*1024k を計算して、500M の代わりに使用することもできます。その後、MySQLを再起動してください。