Laravel 5.1 - 检查数据库连接

时间:2015-10-30 09:35:00

标签: php mysql laravel

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

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

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

  1. 如果已连接数据库1,请将数据保存到其中
  2. 如果未连接数据库1,请检查数据库2是否已连接
  3. 如果数据库2已连接,则将数据保存到其中
  4. 如果未连接数据库2,请检查数据库3是否已连接
  5. 如果已连接数据库3,请将数据保存到其中
  6. 要清楚,有没有办法检查Laravel 5.1中是否连接了数据库?

6 个答案:

答案 0 :(得分:83)

尝试获取基础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 );
}

答案 1 :(得分:33)

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

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

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

  

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

接近答复结束。

答案 2 :(得分: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 :(得分: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

答案 4 :(得分:0)

另一种方法:

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

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

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

    return "Error connecting to database";
});

希望这有用。

答案 5 :(得分:0)

您还可以运行以下命令:

php artisan migrate:status

建立数据库连接以从迁移表中获取迁移。如果连接失败,它将引发异常。