php - Laravel Multi-Tenancy Passport API : No Database Selected

Laravel Multi-Tenancy Passport API : No Database Selected

while applying the php artisan passport:install command to generate OAuth_Client

Getting the error as ...

PDOException::("SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected")

  2   C:\wamp64\www\vaistra\products\VSMS\vendor\laravel\framework\src\Illuminate\Database\Connection.php:458
      PDO::prepare("insert into `oauth_clients` (`user_id`, `name`, `secret`, `redirect`, `personal_access_client`, `password_client`, `revoked`, `updated_at`, `created_at`) values (?, ?, ?, ?, ?, ?, ?, ?, ?)")

My below code is .... Created PassportSeeder for installing Passport

database\seeds\PassportSeeder.php

<?php
use Illuminate\Database\Seeder;

use Laravel\Passport\Client;
use Laravel\Passport\PersonalAccessClient;

class PassportSeeder extends Seeder
{
    public function run()
    {
        $client = Client::create([
            'name' => 'Personal Access Client',
            'secret' => config('passport.personal_access_client.secret'),
            'redirect' => 'http://localhost',
            'personal_access_client' => '1',
            'password_client' => '0',
            'revoked' => '0',
        ]);
        
        PersonalAccessClient::create([
            'client_id' => $client->id,
        ]);
    }
}

config\database.php

    'default' => env('DB_CONNECTION', 'tenant'),

'connections' => [

        'tenant' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => null,
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'landlord' => [
            'driver' => 'mysql',
            'url' => env('LANDLORD_DATABASE_URL'),
            'host' => env('LANDLORD_DB_HOST', '127.0.0.1'),
            'port' => env('LANDLORD_DB_PORT', '3306'),
            'database' => env('LANDLORD_DB_DATABASE', 'forge'),
            'username' => env('LANDLORD_DB_USERNAME', 'forge'),
            'password' => env('LANDLORD_DB_PASSWORD', ''),
            'unix_socket' => env('LANDLORD_DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('LANDLORD_MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

app\Providers\AuthServiceProvider.php

    public function boot()
    {
        $this->registerPolicies();

        Passport::hashClientSecrets();
        
        Passport::routes();

    }

Answer

Solution:

The database is set to null in your tenant connection.

Source