【问题标题】:Connection Error with Laravel Passport and PostgreSQLLaravel Passport 和 PostgreSQL 的连接错误
【发布时间】:2020-08-07 21:31:43
【问题描述】:

我正在使用 POSTGRESQL 数据库安装一个带有 Laravel Passport 的新 API。在安装 Laravel 和基本身份验证时,它可以正常注册用户并完美登录。 (获取数据库好,这很重要!)但是当按照步骤安装 Passport 并运行“php artisan migrate”命令时,Passport 无法识别我正在使用 POSTGRESQL 并寻找与 MYSQL 的连接,这是非存在的。我会欣赏想法,我不知道还能做什么。

错误:

Illuminate\Database\QueryException 

SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO) (SQL: 
create table `oauth_auth_codes` (`id` varchar(100) not null, `user_id` bigint unsigned not 
null, `client_id` bigint unsigned not null, `scopes` text null, `revoked` tinyint(1) not 
null, `expires_at` datetime null) default character set utf8mb4 collate 
'utf8mb4_unicode_ci')

at vendor/laravel/framework/src/Illuminate/Database/Connection.php:671
667|         // If an exception occurs when attempting to run a query, we'll format the 
error
668|         // message to include the bindings with SQL, which will make this exception a
669|         // lot more helpful to the developer instead of just the database's errors.
670|         catch (Exception $e) {
671|             throw new QueryException(
672|                 $query, $this->prepareBindings($bindings), $e
673|             );
674|         }
675| 

我尝试没有结果:

php artisan cache:clear
php artisan config:cache

我的 .ENV:

#DB_CONNECTION=mysql
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=laravel
#DB_USERNAME=root
#DB_PASSWORD=

我的 POSTGRESQL 配置/数据库:

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

'connections' => [        

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'forge'),
        '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'),
        ]) : [],
    ],

    'pgsql' => [
        'driver' => 'pgsql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', '127.0.0.1'),
        'port' => env('DB_PORT', '5432'),
        'database' => env('DB_DATABASE', 'xxxx'),
        'username' => env('DB_USERNAME', 'xxxxxxxxxxx'),
        'password' => env('DB_PASSWORD', 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'),
        'charset' => 'utf8',
        'prefix' => '',
        'prefix_indexes' => true,
        'schema' => 'someschema',
        'sslmode' => 'prefer',
    ],

【问题讨论】:

    标签: laravel laravel-5 laravel-6 laravel-passport


    【解决方案1】:

    我终于在 Laravel Passport 论坛中找到了解决方案,似乎在最新版本中,与数据库的连接是直接在护照中配置的(我不知道为什么它不从 .env 或 config / 数据库),“发布”(导出)我将包含 Passport 存储驱动程序的连接文件出售给应用程序,以便能够对其进行修改并声明专用于 Passport 的连接。不用说,Laravel 中有 3 个不同的地方可以声明与数据库的连接,以直接与 Otwell 聊天为准。

    无论如何,这是通过以下命令完成的:

    php artisan vendor:publish --tag=passport-config 
    

    它在config文件夹中添加了一个名为passport.php的文件,我们可以在其中找到,准备配置:

    /*
    |--------------------------------------------------------------------------
    | Passport Storage Driver
    |--------------------------------------------------------------------------
    |
    | This configuration options determines the storage driver that will
    | be used to store Passport's data. In addition, you may set any
    | custom options as needed by the particular driver you choose.
    |
    */
    
    'storage' => [
        'database' => [
            'connection' => env('DB_CONNECTION', 'mysql'),
        ],
    ],
    

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      相关资源
      最近更新 更多