Laravel: ошибка [PDOException]: не удалось найти драйвер в PostgreSQL

Я пытаюсь подключиться к базе данных PostgreSQL через Laravel, чтобы выполнить миграцию php artisan, но, похоже, не направлен, так как он читает имя базы данных MySQL.

вот команды из базы данных.на PHP:

'connections' => array(

    'sqlite' => array(
        'driver'   => 'sqlite',
        'database' => __DIR__.'/../database/production.sqlite',
        'prefix'   => '',
    ),

    'mysql' => array(
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'database',
        'username'  => 'root',
        'password'  => '',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

    'pgsql' => array(
        'driver'   => 'pgsql',
        'host'     => 'localhost',
        'database' => 'postgres',
        'username' => 'postgres',
        'password' => 'root',
        'charset'  => 'utf8',
        'prefix'   => '',
        'schema'   => 'public',
    ),

    'sqlsrv' => array(
        'driver'   => 'sqlsrv',
        'host'     => 'localhost',
        'database' => 'database',
        'username' => 'root',
        'password' => '',
        'prefix'   => '',
    ),

),

если я удалю пути MySQL, я получу:

[InvalidArgumentException]
Database [mysql] not configured.


EDIT: При попытке сделать php artisan migrate я получаю "PDOException: не удалось найти драйвер". Я использую WAMP и Я в Win8.1. Использование PostgreSQL в качестве базы данных.


EDIT: Я экспериментировал с рядом альтернативных решений, но я все еще должен решить эту проблему. The php.ini файл был проверен в Apache, WAMP (из папки php) и PostgreSQL. The extension_dir - это правильно, это -> extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"

на extension=pdo_pgsql.dll и extension=pgsql.dll отсутствие комментариев.

сделал PATH трюк в "системных переменных" и перезагрузка. Никаких шансов.

спасибо помощь пока есть.

это мои драйверы php_pdo_driver.h & php_pdo.h С C:Program Files (x86)PostgreSQLEnterpriseDB-ApachePHPphpSDKincludeextpdo

информация от phpinfo:

PHP версии 5.5.12

компилятор MSVC11 (Visual C++ 2012) настройка команды cscript /nologo конфигурировать.js "--enable-snapshot-build "" --disable-isapi" "--enable-debug-pack ""--without-mssql "" --without-pdo-mssql" "--без-pi3web" "--с-ПДО-осі=с:РНР-СДКоракулх64instantclient10СДК,общая" "...с-библиотека oci8=с:РНР-пакет SDKоракулх64instantclient10СДК,общая" "--с-библиотека oci8-11г=с:РНР-СДКоракулх64instantclient11СДК,общая" "--enable-object-out-dir=../obj / "" --enable-com-dotnet=общий доступ" "--with-mcrypt=static ""--disable-static-analyze" "--with-pgo"

17 ответов


обязательно настройки 'default' ключ в app/config/database.php

для postgres это будет 'default' => 'postgres',

если вы получаете [PDOException] could not find driver ошибка, проверьте, установлены ли у вас правильные расширения PHP. Вам нужно pdo_pgsql.so и pgsql.so установлен и включен. Инструкции о том, как это сделать, различаются между операционными системами.

для Windows pgsql расширения должны быть предварительно загружены с официальным дистрибутивом PHP. Просто отредактируйте php.ini и раскомментируйте строки extension=pdo_pgsql.so и extension=pgsql.so

кроме того, в php.ini, убедится extension_dir установлен в соответствующий каталог. Это должна быть папка с именем extensions или ext или аналогичный внутри вашего каталога установки PHP.

наконец, скопировать libpq.dll С C:\wamp\bin\php\php5.*\ на C:\wamp\bin\apache*\bin и перезапустите все службы через интерфейс WampServer.

если вы все еще получаете исключение, вам может потребоваться добавить postgres \bin каталог для вашего PATH:

  1. Свойства системы -> вкладка Дополнительно -> Переменные среды
  2. в группе "системные переменные" в нижней половине окна прокрутите и найдите PATH запись.
  3. выберите его и нажмите Edit
  4. в конце существующей записи укажите полный путь к каталогу Postgres bin. Папка bin должна находиться в корневом каталоге установки postgres.
  5. перезапустите все открытые командные строки, или, чтобы быть уверенным, перезагрузите компьютер.

это, надеюсь, решит любые проблемы. Для получения дополнительной информации см.:


на PDOException: could not find driver на MySQL, а если Debian на основе ОС

sudo apt-get -y install php5-mysql

для PHP 7 в Ubuntu, вы также можете сделать:

sudo apt-get install php7.0-pgsql

Итак, теперь вы можете не раскомментировать строки php.ini

UPD: У меня такая же ошибка, значит проблема не в драйвере. Я изменил свой database.ini, но каждый раз я видел ошибку. И я меняю базе config в .env и ошибок нет.


Я понимаю, что это старый вопрос, но я нашел его в поиске Google, поэтому я собираюсь пойти вперед и ответить на случай, если кто-то еще столкнется с этим. Я на Mac и имел ту же проблему, но решил ее с помощью доморощенного. После того, как вы его установили, вы можете просто запустить эту команду:

brew install php56-pdo-pgsql

и замените 56 любой версией PHP, которую вы используете без десятичной точки.


это сработало для меня:

$ sudo apt-get install php-gd php-mysql


У меня была та же проблема. Это то, что сработало для меня.

есть 2 php.файлы ini:

  • C:\wamp\bin\apache\apache2.4.9\bin
  • C:\wamp\bin\php\php5.5.12

Примечание: это использует мою версию PHP и Apache, измените на то, что у вас есть.

php.ini-файл, расположенный в обеих папках, - это то, что вам нужно обновить, Реми:

  • расширения=php_pdo_pgsql.dll файлы
  • расширения=php_pgsql.dll файлы

Это то, что нужно раскомментировать (удалить ; символ).

перезапустите Wamp и командную строку.

надеюсь, это сработает для вас :).


sudo apt-get install php7.1-pgsql

для тех, кто хочет использовать Postgresql на OpenSuse (и co), попробуйте следующее:

zypper --no-refresh in php5-pgsql

старый нить, я знаю, но я потерял пару часов своей жизни с этим. Вам также нужно установить информацию о БД в.файл env. Вы не есть чтобы указать драйвер здесь, потому что значение по умолчанию указано в базе данных.php используется (Я думаю). Я боролся, потому что это было DB_CONNECTION=mysql в рамках .env-файл, и я использовал pgsql.


в моем случае у меня было установлено две версии PHP. Так что мне пришлось использовать

$ /opt/lampp/bin/php artisan serve вместо

$ php artisan serve


Я был на виртуальном хостинге и там мне пришлось включить все pdo

Like this image shows


разрешенный после 3 часов... Я использую WAMP (PHP 7.2.4), PostgreSQL 10, Laravel 5.6.29. Загруженные расширения PHP (pgsql, pdo_pgsql) от Wampserver 3.3, затем я смог подключиться к серверу PostgreSQL с помощью простого PHP testcode из каталога www. Но!--0--> возвращается

PDOException:: ("не удалось найти драйвер")

Я проверил оболочку (Git bash для windows) с помощью $ php --ini, который вернулся C:\wamp64\bin\php\php7.2.4\php - ... ini вместо из c:\wamp64\bin\apache\apache2.4.33\bin\php - ... ini, загруженный WAMP Таким образом, вы должны раскомментировать расширения pgsql и pdo_pgsql также в C:\wamp64\bin\php\php7.2.4\php - ... ini, а затем миграция будет работать ...


в Windows 8 PC с Laragon 3.4.0 180809 я столкнулся с той же проблемой. Это произошло в моем случае, потому что я обновил Laragon и добавил новую версию PHP. Так laragon/bin/php/ У меня на самом деле было два каталога:

  • php-7.1.20-Win32-VC14-x64
  • php-7.1.7-Win32-VC14-x64

добавил 7.1.20 в свою PATH переменной. Но в моей командной консоли работает php --ini показывал, что путь на самом деле получался от старшего: php-7.1.7-Win32-VC14-x64. Поэтому я удалил старый (для безопасность, я положил его в корзину). Но Ларагон не смог начать после этого.

так, в laragaon/etc/apache2/mod_php.conf, Я изменил путь до последней версии PHP. Затем перезапущен Laragon и проблема решена.

ссылки: как добавить еще одну версию PHP-Laragon Forum


установите значение по умолчанию 'default' => 'sqlite';

проверить -http://three.laravel.com/docs/database/config

а это - настройка PostgreSQL с Laravel в MAMP


это сработало для меня:

$ sudo apt-get -y install php5.6-pgsql
$ sudo service apache2 restart

Я работаю с 32bit Ubuntu 14


Я вижу, что вы используете Windows. Я не смог исправить это, включив любое из расширений, которые поставляются с моим сервером Windows WAMP. Я попробовал PDO_ODBC и другие и даже нашел официальный Microsoft PDO_SQLSRV.

решением для меня было установить драйверы PDO_SQLSRV с стороннего веб-сайта. Я нашел водителей. http://robsphp.blogspot.nl/2012/06/unofficial-microsoft-sql-server-driver.html

Я обычно не пользуюсь Dll со случайных сайтов, но я был в отчаянии, и это сработало для меня. Надеясь, что это спасет других от многих часов разочарования.


Использование Laravel V 5.5.39 С Php 7.1.12 работает нормально, но более поздние (более новые) версии php вызывают проблему. Итак, измените версию Php, и вы получите решение 100% .