私のdrupal 7サイトでは、この変数のボールパーク番号を知る必要があります。最近、 "drupal" PDOException:SQLSTATE [08S01]:Communication link failure:1153 "エラーが発生しました。mysqlの初心者であり、共有ホスティングを使用しています。おそらく、管理者に依頼する必要があります。
前もって感謝します。
私のdrupal 7サイトでは、この変数のボールパーク番号を知る必要があります。最近、 "drupal" PDOException:SQLSTATE [08S01]:Communication link failure:1153 "エラーが発生しました。mysqlの初心者であり、共有ホスティングを使用しています。おそらく、管理者に依頼する必要があります。
前もって感謝します。
回答:
あなたが持っているかもしれない最大のBLOBに関する質問への興味深い答えを見ました。ServerFaultで見たステートメントは次のとおりです。innodb_log_file_sizeとinnodb_log_buffer_sizeの組み合わせは、大きなblobオブジェクトがたくさんある場合、最大のblobオブジェクトの10倍より大きくなければなりません。
Nils-AndersNøttseterからのServerFaultの投稿に基づいて、テーブルをクエリし、どのBLOBが最大であるかを見つけ、その数に11以上を掛け、その答えをmax_allowed_packetとして使用します。
問題を解決するためにmax_allowedパケットのサイズを変更することを提案した別の質問に答えたのは面白いです。
よるブック
以下は、MySQLパケットに関する段落1〜3の説明です。
MySQLネットワーク通信コードは、クエリは常に適度に短いという前提の下で作成されたため、MySQL用語ではパケットと呼ばれる1つのチャンクでサーバーに送信および処理できます。サーバーは、パケットを格納するための一時バッファにメモリを割り当て、完全に収まるのに十分なほど要求します。このアーキテクチャでは、サーバーのメモリ不足を回避するための予防措置が必要です。このオプションでは、パケットのサイズの上限が達成されます。
このオプションに関連する重要なコードは sql / net_serv.ccにあります。my_net_read()を見て、my_real_read()の呼び出しに従って、net_realloc()に特に注意を払って ください。
この変数は、多くの文字列関数の結果の長さも制限します。詳細については、sql / field.ccおよび sql / intem_strfunc.ccを参照してください。
MySQLパケットについてこれを知ることにより、DBAは、たとえサイズが大きくても、1つのMySQLパケット内の複数のBLOBに対応できるようにサイズを調整できます。
あなたの状況に関しては、データベースで最大のBLOBを見つけ、その数を11 倍して、max_allowed_packetをその数に設定する必要があります。mysqlを再起動せずにサーバーに設定できるはずです(個人的には、このフォーラムの範囲外である移行とレプリケーションに関する他の問題に対処するため、256Mに設定します)。すべての着信接続のデータベースで256Mに設定するには、次を実行してください。
SET GLOBAL max_allowed_packet = 1024 * 1024 * 256;
その後、この設定をmy.cnfの[mysqld]
セクションの下に追加します。
[mysqld]
max_allowed_packet = 256M
Drupalのデータベースサーバー要件ページから取得:
システム変数max_allowed_packetを少なくとも16Mに設定する必要がある場合があります。一部の安価なホスティングプランでは、この値が低すぎます(MySQLのデフォルトは1Mのみです)。その場合、より良いホスティングプランを選択する必要があるかもしれません。Drupal 5には1Mの値で十分かもしれません。
共有ホスティングのサイトには問題ありません。
設定するのは少し難しいかもしれませんmax_allowed_packet
。その値を計算する方法にはまだ出会っていません。通常、{cache}
テーブルからの行を含むデータベーススナップショットを復元しようとすると、それに遭遇します。
この問題が発生した場合、4M〜8Mの値を選択します。止まるまで値を上げ続けます。ただし、共有ホストがこの値を変更するかどうかはわかりません。