2012-01-11 8 views
30

私のアプリケーションはIMAP経由でメールをダウンロードし、それらをMySQLデータベースに保存します。以前は10MBまでのメールサイズをサポートしていたため、メールコンテンツを格納するための「mediumtext」カラムで十分でした。今私は最大30MBのメールをサポートする必要があります。だから私は「largetext」への列のデータ型を変更しました。昨日、サイズが25 MBのメールが保存されました。その後、私はmysqldumpコマンドを実行するたびにエラーをスローします:mysqldumpエラー:max_allowed_pa​​cketより大きいパケットを取得しました '

 
mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `ib_mailbox_backup` at row: 3369 

行3369には25 MBのメールが含まれています。

MySQLの設定で、私は 'max_allowed_pa​​cket'を64Mから512Mに増やしましたが、それでも同じエラーで失敗します。 MySQLサーバが稼動しているマシンと同じマシンでmysqldumpコマンドを実行する。これをどうすれば解決できますか?

+1

"行3369には25 MBのメールが含まれています。 行3369のサイズはどのように調べましたか? – Gopu

答えて

77
  1. あなたのmysqldumpコマンドに--max_allowed_packet=512Mを追加することができます。
  2. またはあなたのmy.cnf(感謝@Varun)

ノートの[mysqldump]セクションにmax_allowed_packet=512Mを追加します。それは[mysqldump]セクションの下でない場合、それは動作しません...

+0

それは働いた。これをMySQLの設定ファイルに入れる方法はありますか? – Varun

+0

これはmysqldumpオプションなので動作しませんが、UnixファミリOSの場合はエイリアスを作成することができます。 –

+5

セクション[mysqldump]を作成し、confファイルに max_allowed_pa​​cket = 200Mを追加すると動作します。 – Varun

0

私は、同様のエラーを持っていたし、行0にパケットサイズ512Mで失敗します。明らかに壊れていたinnodbテーブルでした(mysqlcheckはOKと表示されました)。私はテーブルを再作成して終了し、ちょうど128Mの小さなパケットサイズで正常に動作しました。

+1

ここで特定の問題が設定問題であった理由を説明できますか? – Hiphop03199

1

Debian 9へのアップグレード後に一部のスクリプトが動作を停止しました& MariaDB。

DebianのMariaDBには、特にmysqldump設定用の新しい設定ファイル(/etc/mysql/conf.d/mysqldump.cnf)が導入されています。以前/etc/mysql/my.cnfmax_allowed_packet <>16Mを設定していた場合は、新しい設定ファイルが上書きされます。したがって、この新しい設定ファイルを確認して、エントリを削除するか、必要に応じて調整してください。

私は変更がMySQLのからMariaDBにスワップによって導入またはDebianは設定ファイルがV9にレイアウトされている方法に変更を加えた場合されたかはわかりません。

関連する問題