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
:
- Свойства системы -> вкладка Дополнительно -> Переменные среды
- в группе "системные переменные" в нижней половине окна прокрутите и найдите
PATH
запись. - выберите его и нажмите Edit
- в конце существующей записи укажите полный путь к каталогу Postgres bin. Папка bin должна находиться в корневом каталоге установки postgres.
- перезапустите все открытые командные строки, или, чтобы быть уверенным, перезагрузите компьютер.
это, надеюсь, решит любые проблемы. Для получения дополнительной информации см.:
на 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, которую вы используете без десятичной точки.
У меня была та же проблема. Это то, что сработало для меня.
есть 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 и командную строку.
надеюсь, это сработает для вас :).
для тех, кто хочет использовать 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
разрешенный после 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 и проблема решена.
установите значение по умолчанию 'default' => 'sqlite';
это сработало для меня:
$ 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% .