データベースは今日のウェブサイトの重要な要素であるため、データベースに影響を与えるエラーは特に心配になるでしょう。たとえば、「MySQL Server Has Gone Away」(和訳:MySQLサーバーが存在しなくなりました)というエラーが発生すると、データベースが存在しなくなったため、最新のバックアップを回復しないとウェブサイトが直らないと思ってしまうでしょう。
恐ろしく聞こえるかもしれませんが、「MySQL server has gone away」エラーは簡単に修正できます。正しい手順に従うと、ウェブサイトは数分で直るはずです。
この記事では、WordPressの「MySQL Server Has Gone Away」エラーの概要とその原因を紹介します。それに、処理方法と再発防止についても述べます。
それでは、まいりましょう。
「MySQL Server Has Gone Away」エラーの概要
まず、「MySQL server has gone away」エラーの概要について説明させていただきます。
エラーメッセージ自体は非常に分かりやすくて、バリエーションがあまりありません。ただし、ご利用のブラウザやサーバーの構成により言葉が少々異なる場合があります。
本エラーは、その名前のとおり、MySQLデータベースに関係しています。具体的には、ほとんどのウェブサイトの場合に次の3つのことのいずれかがこのエラーの原因になります。
- データベースに破損したテーブルがあります。データベースが破損したため、最新のバックアップを回復するか、異常を修復してください。
- PHPの「タイムアウト」設定が低すぎます。あるPHPスクリプトがデータベースにアクセスして、t設定されているタイムアウト時間内に必要な情報を取得できない場合、本エラーが発生する可能性もあります。
- 「パケット」の送信が止まったか、そのサイズが大きすぎます。サーバーこの判断をすると、接続を閉じてエラーを出します。
幸いなことに、上記の問題はすべて簡単に対処できます。トラブルシューティングの手順について説明させていただきます。
WordPressの「MySQL Server Has Gone Away」エラーの処理方法(3つの方法)
前述のように、本WordPressエラーには考えられる原因が複数あります。
そのため、解決策も複数あります。ほとんどの場合、以下の解決策のいずれかを使用すると、ウェブサイトのエラーを取り除くことができます。一つの手順が解決にならない場合は、次の手順に進んでください。
1. WordPressのwp-db.phpファイルを編集する
ウェブサイトのPHPタイムアウト設定が低すぎてデータベースが大きすぎる場合、その時間内に必要なデータを取得することができない場合があります。前述のように、これを原因に「MySQL server has gone away」エラーが発生する場合があります。
異常発生を防ぐには、wp-db.phpというWordPressコアファイルを編集する必要があります。このファイルは、wp-includesディレクトリを開くと、WordPressのルートフォルダーにあります。
ファイルにアクセスするには、FileZillaなどのクライアントを使用し、SFTPでサイトに接続することをお勧めします。サイトに接続したら、wp-db.phpを右クリックして、お好みのテキストエディターを使用してファイルを開きます。
次に、ファイル内で次の行を検索します。
$this->ready = true;
上記のコードの直下に次の行を追加します。
$this->query("set session wait_timeout=300");
このコードが、PHPタイムアウト値をエラーの発生を防ぐのに十分な300秒に設定します。
次に、wp-db.phpファイルの変更を保存し、ウェブサイトが適切に読み込まれているかを確認します。
なお、Kinstaのお客さまは、ウェブサイトのPHPタイムアウト設定値を変更する必要はありません。当社の各プランの基本タイムアウト値は300秒であり、ご希望に応じてさらに増やすことも可能です。
2. WordPressデータベースを修正する
WordPressデータベースが破損することがあります。これにより、データベースとの接続を確立しようとしたときにエラーが発生する場合があります。これはそれほど一般的なことではありませんが、ウェブサイトが成長するにつれてデータベースにテーブル(またはプラグインやテーマの情報)を追加する際に発生することがあります。
この問題を解決するには、WordPress組み込み関数の一つを使用してデータベースを修復します。ただし、最初にその関数を有効にする必要があります。WordPressのルートディレクトリに移動し、wp-config.phpファイルを開いて編集します。
ファイルが開いたら、一番下までスクロールダウンして次の行を追加します。
define('WP_ALLOW_REPAIR', true);
この単純なコード行は、WordPressにデータベース修復機能を有効にするように指示します。wp-config.phpの変更を保存し、ファイルを閉じます。関数を実行するには、次のURLにアクセスしてください。
https://yourwebsite.com/wp-admin/maint/repair.php
次に、「データベースの修復」と「データベースの修復と最適化」のどちらかを選択できます。「MySQL server has gone away」エラーの処理には、「データベースの修復」は十分です。
このプロセスはそれほど長くはかかりません。完了後にエラーはなくなるはずです。ただし、ウェブサイトのデータベース修復関数を無効にする必要があるため、仕事はまだ完了していません。そうしないと、誰でも同じURLにアクセスして関数を実行できます。
したがって、WordPressルートディレクトリに戻り、以前に追加したコード行を削除してください。次に、変更を保存してファイルを閉じます。
3. ご利用のホスティング会社のバックアップを使用してウェブサイトを復元する
すべてが失敗した場合は、ウェブサイトの完全なバックアップを使用して、データベースが正常に機能していた時点までウェブサイトを復元できます。できるだけ少ないデータを失うように、最近のバックアップを使用しましょう。
問題なのは、お客さまに組み込みのバックアップ機能を提供しないWordPress ホスティング会社もあることです。つまり、プラグインなどの手動のソリューションを使用していることが多いということです。これらのツールは必ずしも悪いわけではありませんが、WordPress管理エリアにアクセスできない場合、バックアップの復元は大変な作業になります。
一方、Kinstaでは、各プランでウェブサイトの完全なバックアップにアクセスできます。データベースを含むウェブサイト全体を以前のバージョンに復元するには、ホスティングダッシュボードにアクセスし、「バックアップ」タブを開くだけです。
復元するバックアップをクリックすると、作成日時の情報が表示されます。バックアップごとに、ウェブサイトをその時点の状態に戻すことができる「復元」ボタンがあります。
ただし、この機能を使用すると、ウェブサイトの現在のバージョンが上書きされることにご注意ください。そのため、重要な情報が失われないことが確実な場合の最後の手段としてのみバックアップを使用しましょう。
まとめ
ウェブサイトが大きくなるほど、保存する必要のあるデータが増えます。そのデータはすべてWordPressデータベースに保存されます。場合により、データベースのサイズが大きくなりすぎると、「MySQL server has gone away」などのエラーが発生することがあります。
本エラーが発生した場合、次の3つの解決策を実施してみましょう。
- WordPressのwp-db.phpファイルを編集する
- WordPressデータベースを修正する
- ご利用のホスティング会社のバックアップを使用してウェブサイトを復元する
なお、内容をよく理解いただいたと思いますので、実際に修復をやってみませんか?これでもMySQLの異常が発生する場合は、MySQL 1064エラーの解決策をご参照ください。