インストール中にデータベースへの接続に問題が発生しましたか?このガイドでは、データベース接続に関する一般的な問題を取り上げ、ステップバイステップで解決する方法を説明します。
問題A:検証の失敗
インストーラーのステップ1(Pro)とステップ2(Lite)で、"Test Database "をクリックすると、失敗ステータスが表示されます。
解決策1:バリデーション・チェックリスト
データベースの認証情報とパーミッションが正しく設定されていることを確認する:
- データベースとデータベース・ユーザーが作成されていることを再確認してください。
- パスワードが使用中のデータベース・ユーザーと一致していることを確認する。
- データベース・ユーザーが正しい権限でデータベースに割り当てられていることを確認する。
- 文字入力を検証するために、データベース・ユーザーのパスワードを一時的に'test123'に変更します。
- 正確な必要パラメータについては、ホスティング・プロバイダーにお問い合わせください。
解決策2:ホスト名の検証
ほとんどの場合、デフォルトのホスト名「localhost」が機能しますが、ホスティングプロバイダによって異なる場合があります。正確な設定をホストに確認してください。よくあるバリエーションは以下の通りです:
mysql.yourname.com
mysql.hostingcompany.com
mysql.hostingcompany.com:1400
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)」のようなエラーが表示される場合は、ホスト名が正しくない可能性があります。
クイックフィックス
ホスティングプロバイダーに連絡して、データベース接続のための正しい認証情報を確認してください。以下のサポートリソースを参照してください:
- ゴーダディ
- ホストモンスター
- ブルーホスト
- ホストゲーター
- ドリームホスト
- Googleで検索
"[Your host] database setup"
解決策3:SQLモードの競合
Error reading database variables" メッセージが表示される場合、MySQL インスタンスの SQL モードで "ANSI_QUOTES" が有効になっている可能性があります。このモードでは MySQL は二重引用符を文字列ではなく識別子として扱うため、問題が発生する可能性があります。これを解決するには、ANSI_QUOTES SQLモードを削除してください。
よくあるエラーメッセージ
Unknown column ‘wp_table’ in ‘where clause’
課題B:アクセス拒否
次のようなエラーが表示された場合 Access denied for user 'myuser'@'localhost' (using password: YES)
データベース接続をテストする場合は、以下の解決策に従ってください。
よくあるエラーメッセージ
Error: 'Access denied; you need (at least one of) the PROCESS privilege ...
The database user for this WordPress site does NOT have sufficient permissions to write stored procedures ...
解決策1:完全な権限を割り当てる
データベース・ユーザーに完全な権限が割り当てられていることを確認してください:
- パーミッションを確認する最も簡単な方法は、ホスティングプロバイダーに問い合わせることです。
- WordPress Codex Guideに従って、データベースとユーザーを作成してください。
- cPanelのデモについては、こちらの記事をご参照ください。
- MySQL 8+ 用:以下のコマンドを実行し、必要なすべての権限を付与する:
GRANT SHOW_ROUTINE ON *.* TO <USER>@<LOCATION>;
解決策2:新しいデータベースユーザーを作成する
全権限を割り当ててもうまくいかない場合は、新しいデータベース・ユーザーを作成し、全権限を与えて、そのユーザーにデータベースを割り当ててください。これにより、データベースに保存されているキャッシュの問題を解決できます。
解決策3:サーバー間でデータベースを移動する
MySQLサーバー間でサイトを移行する場合、MySQLのバージョンが異なると同じディレクティブをサポートしないことがあり、次のようなエラーが発生します:
mysqldump: Error: 'Access denied; you need (at least one of) the PROCESS privilege ...'
回避策
- PHP モードでビルドする:MySQL ディレクティブの競合を避けるために PHP を使用します。
- SQL スクリプトを修正します:インストーラを実行する前に、サポートされていないディレクティブを SQL ファイルから削除します。
問題C:データベースのタイムアウト
ステップ2でSQL接続のタイムアウトやメモリー・エラーが発生した場合は、以下の解決策に従ってください。
解決策1:データベース・チャンキングを有効にする
このマルチスレッド処理は、データベースのインストールをより小さなクエリに分割する。
- インストーラーを実行し、"Advanced"ボタンをクリックしてAdvancedモードを有効にします。
- ステップ1のオプション " データベースタブ " 処理で、"チャンキングモード "を有効にする。
- インストールを続ける。
解決策2:データベース抽出をスキップする
新しいデータベーステーブルを作成する代わりに、手動でデータベースをインポートします。
ステップ
- 抜粋
database.sql
アーカイブより - phpMyAdminを使用して既存のテーブルを削除し、SQLファイルをインポートします。
- インストーラーで、詳細オプションの「データベース抽出をスキップ」を選択します。
解決策3:デュプリケーターLite固有の問題
Duplicator Lite(v1.4.7.2またはそれ以前)はシングルスレッドデータベースのインポートのみをサポートしています。
回避策
- インストーラーはオフピーク時に実行する。
- Duplicatorの設定でBuild Modeを "PHP "に変更する。
- サーバーのタイムアウト制限を増やすよう、ホストに連絡してください。
- SQL ファイルチャンキングを使用するには、Duplicator Proにアップグレードしてください。
よくあるエラーメッセージ
MySQL Server has gone away, out of memory, or 500 Error
トラブルシューティング
接続の問題が解決しない場合は、PHPコードを使用して問題を切り分けます。という名前のファイルを作成します。 db-test.php
をインストーラーと同じディレクトリに置き、以下のコードを挿入する:
<?php
$servername = "your_server";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Success: Connected to MySQL!";
?>
スクリプトが失敗した場合は、ホスティングプロバイダーとスクリプトを共有して、さらにデバッグを行ってください。
このスクリプトは Duplicator Pro ツールディレクトリ で /plugins/duplicator-pro/tools/db-test.php
.
これらの解決策に従うことで、データベース接続の問題を解決し、スムーズなインストールプロセスを実現することができます。