Laravel7 どのDBに接続しようとしているか(接続されているか)確認する方法

データベースにうまく接続出来ない時、どのデータベースに接続を試みているのか確認する方法。
特に、ブラウザアクセスでは正しくデータベースに接続出来ているのに、cronから起動されるコマンドなどの場合に接続出来ない時の調査時に良いと思います。

vendor/laravel/framework/src/Illuminate/Database/Connection.phpの
670行目あたりに、dd($this->pdo);を追記する。

    protected function runQueryCallback($query, $bindings, Closure $callback)
    {
dd($this->pdo);  ←これを追記!!
        // To execute the statement, we'll simply call the callback, which will actually
        // run the SQL against the PDO connection. Then we can calculate the time it
        // took to execute and log the query SQL, bindings and time in our memory.
        try {
            $result = $callback($query, $bindings);
        }

        // If an exception occurs when attempting to run a query, we'll format the error
        // message to include the bindings with SQL, which will make this exception a
        // lot more helpful to the developer instead of just the database's errors.
        catch (Exception $e) {
            throw new QueryException(
                $query, $this->prepareBindings($bindings), $e
            );
        }

        return $result;
    }

そしてうまく接続出来ないコマンドを叩いてみる。

C:\xampp\htdocs\xxxxx>php artisan xxxxx:xxxxx

すると、以下のように表示される。

Closure()^ {#24
  class: "Illuminate\Database\Connectors\ConnectionFactory"
  this: Illuminate\Database\Connectors\ConnectionFactory {#46 …}
  use: {
    $config: array:15 [
      "driver" => "mysql"
      "host" => "localhost"
      "port" => "3306"
      "database" => "xxxxx_db"
      "username" => "xxxx"
      "password" => "xxxx"
      "unix_socket" => ""
      "charset" => "utf8"
      "collation" => "utf8_unicode_ci"
      "prefix" => ""
      "prefix_indexes" => true
      "strict" => true
      "engine" => null
      "options" => []
      "name" => "mysql"
    ]
  }
  file: "C:\xampp\htdocs\xxxxx\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php"
  line: "177 to 189"
}

これで、どのデータベースに接続しようとしているかが分かる。

もちろんブラウザからアクセスしても、ブラウザで接続先を確認することが出来る。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です