首页 > 解决方案 > Laravel 和 Postgresql 带有消息“找不到驱动程序”错误的 PDOException

问题描述

首先,问题在于 Laravel 而不是 postgresql 或 PHP。我可以用一个简单的 PHP 文件连接 postgresql。但是 Laravel 无法以某种方式做到这一点。

当我尝试使用 laravel 连接计算机中的 postgresql 服务器时,我收到“PDOException with message 'could not find driver'”错误。当我DB::connection()->getPdo();在 artisan tinker 运行命令时出现此错误。

如果我运行php artisan migrate命令,错误是Illuminate\Database\QueryException : could not find driver (SQL: select * from information_schema.tables where table_schema = public and table_name = migrations and table_type = 'BASE TABLE')

我的配置如下:

Laravel .env 文件的相关行:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel_dnm1
DB_USERNAME=postgres
DB_PASSWORD=mrd.BE.265

Laravel database.php 文件的相关行:

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

...

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

当我print_r(PDO::getAvailableDrivers());在我的服务器上运行时,我得到以下输出:

数组([0] => mysql [1] => pgsql [2] => sqlite)

php信息的相关行如下:

phpinfo截图

注意:当我使用 mysql 而不是 postgresql 时没有问题。

NOTE2:当我使用常规 PHP 时,我可以连接数据库。只有 Laravel 给出了这个错误。

标签: phplaravelpostgresqlapache

解决方案


安装postgresql

sudo apt-get install php-pgsql

然后在 etc/php/$PHP_VERSION/apache2/php.ini 文件中取消注释 pgsql 和 pdo-pgsql 扩展

然后重启apache2


推荐阅读