データベース一般エラー:2006 MySQLサーバーがなくなりました


24

最近、コンテンツの種類に関係なくコンテンツを追加しようとするたびにエラーが発生し始めました。これは、ブラウザに表示されるエラーです。

例外の処理中にスローされる追加のキャッチされない例外。

元のPDOException:SQLSTATE [HY000]:一般エラー:2006 MySQLサーバーがなくなりました:SELECT COUNT(cid)FROM {comment} WHERE status =:status; comment_count_unpublished()の配列([:status] => 0)(/Applications/MAMP/htdocs/modules/comment/comment.moduleの313行目)。

追加

PDOException:SQLSTATE [HY000]:一般エラー:2006 MySQLサーバーがなくなりました:INSERT INTO {watchdog}(uid、type、message、variables、severity、link、location、referer、hostname、timestamp)VALUES(:db_insert_placeholder_0、:db_insert_placeholder_1 、:db_insert_placeholder_2、:db_insert_placeholder_3、:db_insert_placeholder_4、:db_insert_placeholder_5、:db_insert_placeholder_6、:db_insert_placeholder_7、:db_insert_placeholder_8、:db_insert_placeholder_9); 配列([:db_insert_placeholder_0] => 1 [:db_insert_placeholder_1] => php [:db_insert_placeholder_2] =>%type:!message in%function(line%line of%file)。[:db_insert_placeholder_3] => a:6:{ s:5: "%type"; s:12: "PDOException"; s:8: "!message"; s:154: "SQLSTATE [HY000]:一般エラー:2006 MySQLサーバーがなくなりました:SELECT COUNT(cid)FROM {comment} WHERE status =:status; 配列([:status] => 0) "; s:9:"%function "; s:27:" comment_count_unpublished() "; s:5:"%file "; s:56:" / Applications / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [:db_insert_placeholder_4] => 3 [:db_insert_placeholder_5] = > [:db_insert_placeholder_6] =>http:// localhost:8888 /?q = node%2Fadd%2Farcade-project&amp ; [:db_insert_placeholder_7] => http:// localhost:8888 / [:db_insert_placeholder_8] => 127.0.0.1 [:db_insert_placeholder_9] => 1338336955)dblog_watchdog()(/ Applications / MAMP / htdocs / modules / dblog /の154行目) dblog.module)。

また、PHPエラーファイルに次のエラーが表示されます。

PHPの致命的なエラー:/Applications/MAMP/htdocs/includes/database/database.inc:2136のメッセージ「SQLSTATE [HY000]:一般エラー:2006 MySQLサーバーがなくなった」でキャッチされない例外「PDOException」

スタックトレース:
0 /Applications/MAMP/htdocs/includes/database/database.inc(2136):PDOStatement-> execute(Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664):DatabaseStatementBase- > execute(Array、Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315):DatabaseConnection-> query( 'SELECT expire、...'、Array、Array)
3 / Applications / MAMP / htdocs / includes / lock.inc(167):db_query( 'SELECT expire、...'、Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146):lock_may_be_available( 'theme_registry:...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447):lock_acquire( 'theme_registry:...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427 ):ThemeRegistry-> set(アレイ)
7 [内部関数]:DrupalCacheArray-> __ destruct()
8 {main}が/Applications/MAMP/htdocs/includes/database/database.incの2136行目にスローされます

これらのエラーメッセージを解読するのに少し苦労しています。誰もがここで何が起こっているのか理解するのを手伝ってもらえますか?

回答:


31

このエラーの10回のうち9回max_allowed_packetは、MySQLサーバーのmy.cnfファイルの設定が不十分であることが原因です。

私の経験では、MAMPの標準のデフォルトは1Mです。これは通常、Drupalには十分ではありません(特に、生成されるキャッシュ文字列のサイズを考慮すると)。

その設定を徐々に増やして、エラーが消えるかどうかを確認してください。簡単なグーグル検索でMAMPでそれを行う方法がわかると思います。


幸いなことに、私のケースは10分の1のカテゴリに分類されませんでした。あなたの推薦は魅力のように働いた!ありがとう!
Mike2012

Windowsで同じエラーに直面しています。apache、mysql、phpスタックをローカルに設定しました...ガイド
プレリットモハン

共有ホスティングの場合、何ができますか?
モハメッドアミンブルカディ

ホストに連絡し、変更を依頼してください。彼らができない/できない場合、このホストがあなたにとって正しいホストであるかどうかを判断する必要があります@mohammedaminebourkadi。
クライブ

6

このMySQL / MariaDBエラー:

エラー:2006(CR_SERVER_GONE_ERROR)-MySQLサーバーがなくなりました

は基本的にクライアントがサーバーに質問を送ることができなかったことを意味します

これは、一時的な不具合、大きすぎるまたは無効なSQLクエリ、サーバーの設定ミス、またはホスティングプロバイダーの制限によって発生する可能性があります。

一般に、このエラーは、次のようないくつかの原因で発生する可能性があります。

  • サーバーへのクエリが正しくないか大きすぎる

    解決策:変数を増やしmax_allowed_packetます

    注:変数がで[mysqld]なくセクションの下にあることを確認してください[mysql]

    注:MySQL / MariaDBサーバーを再起動することを忘れないでください。

  • クライアント側のTCP / IP接続からタイムアウトが発生しました。

    解決策:変数を増やしwait_timeoutます

  • サーバーへの接続が閉じられた後にクエリを実行しようとしました。

    解決策:アプリケーションの論理エラーを修正する必要があります。

  • ホスト名の検索に失敗した(DNSサーバーの問題など)、または--skip-networkingオプションでサーバーが起動されました。

    もう1つの可能性は、ファイアウォールがMySQLポートをブロックすることです(たとえば、デフォルトで3306)。

  • 実行中のスレッドは強制終了されているため、再試行してください。

  • クエリの実行中にサーバーが停止するバグが発生しました。

  • 別のホストで実行されているクライアントには、接続に必要な特権がありません。

  • さらに、B.5.2.9 MySQLサーバーがなくなりました

詳細については、MySQLまたはシステムログ(例/var/log/messages)を確認してください。

MySQLサーバーまたはクライアントをデバッグするには、26.5 MySQLのデバッグと移植を確認してください。


drushまたはmysqlコマンドを使用してファイルからデータベースをインポートしようとしている場合、次のことができます。

  • 続行する-fための強制オプション()を追加し、mysql残りのクエリを実行します。

    これは、データベースにキャッシュに関連する大きなクエリがあり、それらは大きいが関連性がない場合に役立ちます。

    を使用してdrush、試してください:cat foo.sql | $(drush sqlconnect) -f

  • より小さな値で--max-allowed-packetオプションを適用してみてくださいmysql

  • 増加max_allowed_packetし、wait_timeoutあなたのサーバ設定(例で~/.my.cnf)。

  • --skip-extended-insert大規模なクエリを分割するオプションを使用して、元のデータベースを再度ダンプします。次に、ファイルを再度インポートします。


参照:ERROR 2006(HY000):MySQLサーバーがなくなりました


3

@Cliveが通常与える答えはその場合ですが、特にノード追加フォームの場合、追加の原因が存在する可能性があります。

通常、ノード追加フォームは大きく、その処理には大量のメモリが使用される可能性があります(特に、トリミングモジュールのように、保存中に画像処理がある場合)。サーバーのメモリが不足すると、mysqldプロセスが強制終了され、同じ「gone away」メッセージが表示される場合があります。

手がかりは、サーバーログを調べることです。CentOSマシンでは、/ var / log / messagesに次のエントリが表示される場合があります

1月1日00:00:00 servernameカーネル:メモリ不足:プロセスXXXX(mysqld)スコアを削除するか、子を犠牲にし
ますJan 1 00:00:00 servername kernel:プロセスXXXX、UID XX、(mysqld)を削除しました、anon-rss:XXXkB、file-rss:XXkB

ここでの解決策は、RAMを追加するか、スワップを追加/増加することです。

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