Laravel 5.1 - 检查数据库连接

问题描述 投票:30回答:5

我正在尝试检查Laravel中是否连接了数据库。

我查看了文档并找不到任何内容。我发现最接近的是this,但这并不能解决我的问题。

我有三个MySQL实例在不同的机器上设置。下面是我想要实现的简化版本。

  1. 如果已连接数据库1,请将数据保存到其中
  2. 如果未连接数据库1,请检查数据库2是否已连接
  3. 如果数据库2已连接,则将数据保存到其中
  4. 如果未连接数据库2,请检查数据库3是否已连接
  5. 如果连接了数据库3,则将数据保存到其中

要清楚,有没有办法检查Laravel 5.1中是否连接了数据库?

php mysql laravel
5个回答
91
投票

尝试获取基础PDO实例。如果失败,那么Laravel无法连接到数据库!

// Test database connection
try {
    DB::connection()->getPdo();
} catch (\Exception $e) {
    die("Could not connect to the database.  Please check your configuration. error:" . $e );
}

44
投票

你可以使用alexw's解决方案与Artisan。在命令行中运行以下命令。

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

如果连接正常,你应该看到

CONNECTION_STATUS:“连接正常;等待发送。”,

接近结束时。


10
投票

您可以在控制器方法或路径的内联函数中使用它:

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

3
投票

您可以使用此查询来检查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


0
投票

另一种方法:

当Laravel尝试连接到数据库时,如果连接失败或者如果发现任何错误,它将返回PDOException错误。我们可以捕获此错误并重定向操作

app/filtes.php文件中添加以下代码。

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

    return "Error connecting to database";
});

希望这是有帮助的。

© www.soinside.com 2019 - 2024. All rights reserved.