Laravelでデータベースが接続されているかどうかを確認しようとしています。
私はドキュメントを調べましたが、何も見つかりません。私が見つけた最も近いものは this ですが、これは私の問題を解決しません。
MySQLの3つのインスタンスが異なるマシンにセットアップされています。以下は、私が達成しようとしているものの簡易版です。
明確にするために、データベースがLaravel 5.1で接続されていることを確認する方法はありますか?
基礎となるPDOインスタンスを取得してみてください。 thatが失敗した場合、Laravelはデータベースに接続できませんでした!
// Test database connection
try {
DB::connection()->getPdo();
} catch (\Exception $e) {
die("Could not connect to the database. Please check your configuration. error:" . $e );
}
Artisanで alexw's ソリューションを使用できます。コマンドラインで次のコマンドを実行します。
php artisan tinker
DB::connection()->getPdo();
接続に問題がない場合は、表示されるはずです
CONNECTION_STATUS: "接続OK;送信待機中。"、
応答の終わり近く。
これは、コントローラーメソッドまたはルートのインライン関数で使用できます。
try {
DB::connection()->getPdo();
if(DB::connection()->getDatabaseName()){
echo "Yes! Successfully connected to the DB: " . DB::connection()->getDatabaseName();
}else{
die("Could not find the database. Please check your configuration.");
}
} catch (\Exception $e) {
die("Could not open connection to database server. Please check your configuration.");
}
次のクエリを使用して、laravelのデータベース接続を確認できます。
$pdo = DB::connection()->getPdo();
if($pdo)
{
echo "Connected successfully to database ".DB::connection()->getDatabaseName();
} else {
echo "You are not connected to database";
}
詳細については、このページをご覧ください https://laravel.com/docs/5.0/database 。
Laravelがデータベースに接続しようとすると、接続に失敗した場合、またはエラーが見つかった場合、PDOException
エラーが返されます。このエラーをキャッチして、アクションをリダイレクトできます
app/filtes.php
ファイルに次のコードを追加します。
App::error(function(PDOException $exception)
{
Log::error("Error connecting to database: ".$exception->getMessage());
return "Error connecting to database";
});
これが役に立てば幸いです。