一般的なエラー:2006 MySQLサーバーが廃止されました[終了]


8

これは、突然発生するエラーです。

Additional uncaught exception thrown while handling exception.

Original
PDOException: SQLSTATE[70100]: Unknown error: 1317 Query execution was interrupted...my query

Additional
PDOException: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away...my query

いくつかの調査を行った後、私が作成したカスタムモジュールが大きすぎるクエリを試行しているように聞こえます。多くの人に役立つと思われる解決策はこれです:

  1. my.iniを開きます
  2. 「max_allowed_pa​​cket」を「1m」から「16m」(またはそれ以上)に変更します
  3. my.iniを保存してMySQLを再起動します

ただし、私は共有サーバーを使用しているため、my.iniを編集できません。また、プロバイダーが値が1Mに設定されていることを確認しても、増加しません。

私もこれを追加してみました:ini_set('mysqli.reconnect', 'on');settings.php。それは問題を解決しませんでした。

誰かが別の解決策を知っていますか、または回避しますか?

ありがとう。


回答:


8

共有ホスティング会社は、SUPER特権を提供しません。持っている場合、 これを実行するだけでmax_allowed_pa​​cketを512Mに簡単に設定できます。

mysql> SET GLOBAL max_allowed_packet = 1024 * 1024 * 512;

再起動は必要ありません。その後、すべての着信接続は512M パケットを持つことができます。

あなたはこれを行うことができません:

mysql> SET max_allowed_packet = 1024 * 1024 * 512;

あなたが得るので

ERROR 1621 (HY000): SESSION variable 'max_allowed_packet' is read-only. Use SET GLOBAL to assign the value

私が考えることができる唯一の選択肢は、Amazon EC2に切り替えてMySQLをそこにインストールすることです。そうすることで、my.cnf / my.iniを編集してSUPER権限を持つことができます。


0

私はプロバイダーに値を上げるように頼みましたが、そうしませんでした。理由は理解できます。彼らはビジネスであり、共有サーバーの4.99ではなく、専用サーバーの月額29.99を支払いたいと思っています。

ただし、解決策があります。大きすぎるクエリを特定し、2つ以上の部分に分割します。問題のクエリを半分に分割しました。問題は解決しました。非効率的-はい-しかし、私のサイトがまったく機能しない、または追加料金を支払う必要がないよりはましです。


MySQLパケット(superuser.com/a/273833/76764)について私が言ったことを覚えておいてください。MySQLパケットを詰まらせることができる通常の容疑者は、大きなTEXT / BLOBフィールドです。したがって、TEXT/BLOB fields代わりにjerryのリギングコードを圧縮することを検討してください。
RolandoMySQLDBA 2013年

はい、多分それが問題になる可能性がありますが、私のSELECTクエリは比較的複雑でしたが、返される結果セットは数百文字のテキストでした。
dbj44 2013年

2
かなり大きなINSERTを実行しているキャッシュテーブルで問題が発生する場合があります。あなたのソリューションはここでは機能しません。Drupalがクエリを実行している他の場所でも機能しません。
mpdonadio

これはINSERTではなく、約25の結合を持つSELECTクエリです。すべてクエリビルダーで行われます。これがなぜそのようなエラーを引き起こすのか知っていますか?フォーム送信ハンドラを介してINSERTを実行しても問題ありません。
dbj44 2013年

0

問題はmax_allowed_packet、より大きな値を設定したため です。

この問題を解決する方法(Windowsでとmy.iniファイルを見つけ、他のXAMP使用している場合)
、GoをXAMPP \ mysqlの\ binに
オープンのmy.ini
変更「16メートル」を「1メートル」から「max_allowed_pa​​cketの」
保存のmy.ini
今すぐ再起動XAMPPコントロールパネルからMySql。

ここでこのソリューションを見つけました。http://minorpoint.blogspot.com/2007/09/mysql-server-has-gone-away.html

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.