PDOException с сообщением «не удалось найти драйвер» Ошибка для Laravel и Postgresql - PullRequest
0 голосов
/ 20 сентября 2019

Прежде всего, проблема в том, что Laravel не postgresql или PHP.Я могу подключить postgresql с помощью простого файла PHP.Но Laravel не может это сделать каким-то образом.

Когда я пытаюсь подключить сервер postgresql на моем компьютере с помощью laravel, я получаю сообщение об ошибке «PDOException with message '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 Server 3.1.4
  • Apache 2.4.35
  • PHP 7.2.10
  • Laravel Framework 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()); на моем сервере, я получаю вывод ниже:

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

Связанные строки информации о php приведены ниже:

Screenshot of phpinfo

ПРИМЕЧАНИЕ. При использовании mysql вместо postgresql проблем не возникает.

ПРИМЕЧАНИЕ 2. Я могу подключиться к БД, когда использую обычный PHP.Только Ларавел дает эту ошибку.

Ответы [ 3 ]

0 голосов
/ 20 сентября 2019

установите postgresql

sudo apt-get install php-pgsql

, затем раскомментируйте расширения pgsql и pdo-pgsql в файле etc / php / $ PHP_VERSION / apache2 / php.ini

, затем перезапустите apache2

0 голосов
/ 21 сентября 2019

Я решил проблему.Это ошибка в WAMP, я думаю.Когда я редактирую php.ini из меню WAMP, он открывает файл php.ini, отличный от версии PHP.Поэтому я открыл php.ini из файловой системы и отредактировал его оттуда.

0 голосов
/ 20 сентября 2019

Проверьте версию PHP с помощью php -v

Установите php7.2-pgsql при необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...