php - 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')
我的配置如下:
- 视窗 10
- Wamp 服务器 3.1.4
- 阿帕奇 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 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信息的相关行如下:
注意:当我使用 mysql 而不是 postgresql 时没有问题。
NOTE2:当我使用常规 PHP 时,我可以连接数据库。只有 Laravel 给出了这个错误。
解决方案
安装postgresql
sudo apt-get install php-pgsql
然后在 etc/php/$PHP_VERSION/apache2/php.ini 文件中取消注释 pgsql 和 pdo-pgsql 扩展
然后重启apache2
推荐阅读
- javascript - SyntaxError: Unexpected token { 当试图在 es5 模块中导出一个类以在另一个模块中使用时
- c - 如何集成前缀检查器以根据文件读取查找完整的单词
- php - 如果不重定向到 https,则使用 https
- java - 立即在 Android 应用中禁用 NFC 的 API
- python-3.x - 仅当匹配时,如何合并两个数据框并从新列中的另一列返回数据?
- node.js - 使用 Node.js 访问 NTLM Api
- angular - 如何启用选中 Mat 表中的单个复选框的按钮?
- julia - 从 Julia 的字典中创建一个矩阵,其中的键是我必须拆分的字符串
- c# - 使用表达式主体成员可以提高一些性能?
- php - PHP 和 Ajax 表单发送电子邮件但电子邮件未送达