web-dev-qa-db-ja.com

Laravel 5.1-データベース接続の確認

Laravelでデータベースが接続されているかどうかを確認しようとしています。

私はドキュメントを調べましたが、何も見つかりません。私が見つけた最も近いものは this ですが、これは私の問題を解決しません。

MySQLの3つのインスタンスが異なるマシンにセットアップされています。以下は、私が達成しようとしているものの簡易版です。

  1. データベース1が接続されている場合、データを保存します
  2. データベース1が接続されていない場合は、データベース2が接続されているかどうかを確認してください
  3. データベース2が接続されている場合、データを保存します
  4. データベース2が接続されていない場合は、データベース3が接続されているかどうかを確認してください
  5. データベース3が接続されている場合、データを保存します

明確にするために、データベースがLaravel 5.1で接続されていることを確認する方法はありますか?

34
Enijar

基礎となる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 );
}
92
alexw

Artisanで alexw's ソリューションを使用できます。コマンドラインで次のコマンドを実行します。

php artisan tinker
DB::connection()->getPdo();

接続に問題がない場合は、表示されるはずです

CONNECTION_STATUS: "接続OK;送信待機中。"、

応答の終わり近く。

44

これは、コントローラーメソッドまたはルートのインライン関数で使用できます。

   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.");
    }
10
Luca C.

次のクエリを使用して、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

3

別のアプローチ:

Laravelがデータベースに接続しようとすると、接続に失敗した場合、またはエラーが見つかった場合、PDOExceptionエラーが返されます。このエラーをキャッチして、アクションをリダイレクトできます

app/filtes.phpファイルに次のコードを追加します。

App::error(function(PDOException $exception)
{
    Log::error("Error connecting to database: ".$exception->getMessage());

    return "Error connecting to database";
});

これが役に立てば幸いです。

0
ArtisanBay