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:
Я экспериментировал с серией альтернативных решений, но я все еще должен решить эту проблему.
Элемент
php.ini файл был проверен в Apache, WAMP (из папки php) и PostgreSQL. Элемент extension_dir - это правильно, это -> extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"The 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-включает пакет" "--без операций" "--без-ПДО-в MSSQL"
"--без-pi3web"
"--with-pdo-oci=C:php-sdkoraclex64instantclient10sdk, shared"
"...с-библиотека oci8=с:РНР-пакет SDKоракулх64instantclient10СДК,общая"
"--with-oci8-11g=C:php-sdkoraclex64instantclient11sdk, shared"
"--enable-object-out-dir=../obj / "" --enable-com-dotnet=shared"
"...с-mcrypt=статика" "--отключить-статический-анализ" "--с-ПГО"
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запись.- выберите его и нажмите кнопку Редактировать
- в конце существующей записи, поместите полный путь к каталогу 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.iniUPD: У меня такая же ошибка, значит проблема не в драйвере. Я изменил свой
database.ini, но каждый раз я видел ошибку. И я меняю конфигурацию базы данных в.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-файл, расположенный в обеих папках, - это то, что вам нужно обновить, расширения:
- extension=php_pdo_pgsql.dll
- extension=php_pgsql.dll
Это то, что нужно раскомментировать (удалить ; символ).
перезапустите Wamp и командную строку.
надеюсь, это будет работать для вас :).
для тех, кто хочет использовать Postgresql на OpenSuse (и co), попробуйте следующее:
zypper --no-refresh in php5-pgsql
старый нить, я знаю, но я потерял пару часов своей жизни с этим. Вам также необходимо установить информацию о БД в поле .env file. Ты же не есть чтобы указать драйвер здесь, потому что по умолчанию указано в базе данных.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. Но
$ php artisan migrateвозвращаетсяPDOException:: ("не удалось найти драйвер")
Я проверил оболочку (git bash для windows) с
$ php --ini, который возвращается C:\wamp64\bin\php\php7.2.4\php.вместо Ини из 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 ПК с Laragon 3.4.0 180809, я столкнулся с той же проблемой. Это произошло в моем случае, потому что я обновил Laragon и добавил новую версию PHP. Так что в
laragon/bin/php/У меня на самом деле было два каталога:
php-7.1.20-Win32-VC14-x64php-7.1.7-Win32-VC14-x64добавил
7.1.20в своюPATHпеременной. Но в моей командной консоли, работаетphp --iniпоказывал, что путь на самом деле был fetching от старшего: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 Official 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% .

Comments