MySQLの"max_allowed_packet"について教えてください。

使用しているのは5.0になります。

「Got a packet bigger than 'max_allowed_packet'」

上記のようなエラーがでており、
調べてみると1パケットあたりの最大バイト数を越えているとのことでした。

設定はは下記のようになってました。

max_allowed_packet : 1048576

こちらの設定値を増やせば解消するとは思うのですが、
該当のSQLにはLIMITの制限がはいっています。
1レコードは20バイト未満でLIMITで200に制限しています。

ただし5つのSELECTをUNIONした物をLIMITしているSQLになります。

この場合、
サーバからクライアントに送られるデータはLIMITした結果の部分だけではないのでしょうか。
であれば該当のSQLに対してなぜこのエラーが出たかがわかりません。

よろしくお願いします。


回答の条件
  • 1人2回まで
  • 登録:2008/12/24 15:45:52
  • 終了:2008/12/31 15:50:03

回答(1件)

  • id:kn1967
    max_allowed_packet は 1MB に設定されているようですが
    この設定は「必要に応じて拡張する場合の最大値」を表すものであって
    常に1MBが確保される訳ではなく、
    実際に、どれだけの量を確保出来るかはサーバの状態によります。

    従って、
    その値を増やしただけでは解決できない可能性があるわけでして
    エラーメッセージは「とりあえず増やしてみれば?」という
    解決のための1つのヒントだととらえておくほうがよろしいでしょう。

    細かく解説する時間的余裕が無いのでコメント欄で少しだけ・・・。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません