5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mysqldumpのmax_allowed_packetのデフォルト値は24MB

Last updated at Posted at 2017-04-13

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で別々に設定されているからです。

つまり、

my.conf
[mysqld]
max_allowed_packet=32MB

とした場合、

my.conf
[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を指定してやるのが一般的です。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?