Laravel 5.1 - 检查数据库连接

Eni*_*jar 36 php mysql laravel

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

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

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

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

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

ale*_*exw 94

尝试获取基础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 );
}
Run Code Online (Sandbox Code Playgroud)

  • 这应该被选为正确的答案 (3认同)
  • 但是这个代码必须放在哪个文件中? (3认同)
  • 你能说出你添加这段代码的文件吗? (2认同)
  • @alexw ok例如我需要在第一次启动laravel时使用此代码,所以我在boot()方法和catch die()上的AppServiceProvider中使用它但是返回视图('errors.database')我需要没有'工作它只是显示laravel错误页面..我错过了什么? (2认同)

Lub*_*ský 51

你可以和Artisan一起使用alexw的解决方案.在命令行中运行以下命令.

php artisan tinker
DB::connection()->getPdo();
Run Code Online (Sandbox Code Playgroud)

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

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

接近结束时.

  • 顺便说一句,“php artisantinker”“DB:connection()”可以针对“vendor/laravel/framework/src/Illuminate/Database/Connection.php”类中的任何 API 公共端点,特别是“getConfig()”,其中获取连接到数据库的详细信息确实很方便,允许您从您选择的客户端手动尝试该连接。 (4认同)

Luc*_* C. 12

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

   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.");
    }
Run Code Online (Sandbox Code Playgroud)


Sum*_*hwa 6

你也可以运行这个:

php artisan migrate:status
Run Code Online (Sandbox Code Playgroud)

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


Daw*_*usi 5

您可以使用此查询来检查 laravel 中的数据库连接:

use Illuminate\Support\Facades\DB;
// ...
$pdo = DB::connection()->getPdo();

if($pdo)
   {
     echo "Connected successfully to database ".DB::connection()->getDatabaseName();
   } else {
     echo "You are not connected to database";
   }
Run Code Online (Sandbox Code Playgroud)

有关更多信息,您可以查看此页面https://laravel.com/docs/5.0/database

  • 此检查似乎从配置中读取,而不是从活动连接中读取。如果连接参数不正确,这仍然报告连接成功。 (16认同)
  • **这个答案具有误导性。任何来到这里的人都必须看看下面@alexw 的回答** (8认同)
  • 此代码仅返回配置文件中的值! (3认同)