PHP(PDO)でファイルをMySQLに保存するときに変更しなければいけない点でmax_allowed_packetを24MB以上にしたときの注意点。
#mysqldumpのmax_allowed_packetのデフォルト値は24MB
※MySQL5.6の場合
実際に24MB以上のファイルが登録された場合、夜間のDBバックアップなどでmysqldumpを動かしていると以下のようなエラーが発生します。
mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table
webpage
at row: 172313
原因はmax_allowed_packetがmysqldとmysqldumpで別々に設定されているからです。
つまり、
[mysqld]
max_allowed_packet=32MB
とした場合、
[mysqldump]
max_allowed_packet=32MB
#デフォルトは24MB
としてやる必要があります。
そしてmysqldは以下のように動的に変更できますが、
set global max_allowed_packet = 33554432;
mysqldmpは動的な変更が不可能なためmysqlの再起動が必要となります。
再起動できない場合は、以下のように--max_allowed_packetを明示的に指定してやります。
mysqldmp -u root -ptest --max_allowed_packet=1G --opt --single-transaction --events --hex-blob testDB testTable
mysqldumpにおける--max_allowed_packetは特に制限する必要はないので、MAXの1Gを指定してやるのが一般的です。