繁体   English   中英

PDOException 与消息“找不到驱动程序”Laravel 和 Postgresql 错误

[英]PDOException with message 'could not find driver' Error for Laravel and Postgresql

首先,问题是关于 Laravel 而不是 postgresql 或 PHP。 我可以将 postgresql 与简单的 PHP 文件连接起来。 但是 Laravel 不能以某种方式做到这一点。

当我尝试将我的计算机中的 postgresql 服务器与 laravel 连接时,我收到“PDOException with message 'could not find driver'”错误。 运行DB::connection()->getPdo(); 在工匠修补匠的指挥。

如果我运行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')

我的配置如下:

  • Windows 10
  • Wamp 服务器 3.1.4
  • Apache 2.4.35
  • PHP 7.2.10
  • Laravel 框架 6.0.3

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数据库.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()); 在我的服务器上,我低于 output:

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

php信息的相关行如下:

phpinfo截图

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

注意 2:当我使用常规 PHP 时,我可以连接数据库。 只有 Laravel 给出此错误。

安装 postgresql

sudo apt-get install php-pgsql

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

然后重启 apache2

使用php -v验证您的 PHP 版本

需要时安装php7.2-pgsql

我解决了这个问题。 我认为这是 WAMP 的一个错误。 当我从 WAMP 的菜单中编辑 php.ini 时,它会打开一个与活动 PHP 版本不同的 php.ini。 所以我从文件系统打开 php.ini 并从那里编辑它。

您的 WAMP SERVER 上安装了不同的 php 版本。 当您单击 WAMP 图标时,它将显示 pgsql 和 pdo_pgsql 处于活动状态,但针对不同的 php 版本。 You need to check your php version using php -v command and then go to the WAMP folder and find that php version and edit php.ini file and enable pgsql extensions there.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM