首先,问题与Laravel有关,而不是与postgresql或PHP有关。我可以用一个简单的PHP文件连接postgresql,但是Laravel无法完成这项任务。
当我尝试使用Laravel连接我的计算机上的postgresql服务器时,我会收到“PDOException with message 'could not find driver'”错误。在artisan tinker中运行
如果我运行
当我在我的服务器上运行
注意2:当我使用常规PHP时,我可以连接数据库。只有Laravel会出现这个错误。
当我尝试使用Laravel连接我的计算机上的postgresql服务器时,我会收到“PDOException with message 'could not find driver'”错误。在artisan tinker中运行
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 Server 3.1.4
- Apache 2.4.35
- PHP 7.2.10
- Laravel Framework 6.0.3
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());
时,我得到以下输出:
相关的php信息如下:Array ( [0] => mysql [1] => pgsql [2] => sqlite )
注意2:当我使用常规PHP时,我可以连接数据库。只有Laravel会出现这个错误。