Я пытаюсь подключиться к базе данных 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.
php.ini
был проверен в Apache, WAMP (из папки php) и PostgreSQL. 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)\PostgreSQL\EnterpriseDB-ApachePHP\php\SDK\include\ext\pdo
Информация от phpinfo:
Версия PHP 5.5.12
Компилятор MSVC11 (Visual C ++ 2012) Настроить команду cscript / nologo configure.js "–enable-snapshot-build" "–disable-isapi" "–enable-debug-pack" "–without-mssql" "- без-pdo-mssql "" –without-pi3web "" –with-pdo-oci = C: \ php-sdk \ oracle \ x64 \ instantclient10 \ sdk, shared "" –with-oci8 = C: \ php -sdk \ oracle \ x64 \ instantclient10 \ sdk, shared "" –with-oci8-11g = C: \ php-sdk \ oracle \ x64 \ instantclient11 \ sdk, shared "" –enable-object-out-dir = ../obj/ "" –enable-com-dotnet = shared "" –with-mcrypt = static "" –disable-static-analysis "" –with-pgo "
Не забудьте настроить 'default'
ключ в app/config/database.php
Для postgres это будет 'default' => 'postgres',
Если вы получаете [PDOException] could not find driver
ошибку [PDOException] could not find driver
, проверьте, установлены ли у вас правильные расширения PHP. Вам необходимо установить и включить pdo_pgsql.so
и pgsql.so
. Инструкции о том, как это сделать, различаются между операционными системами.
Для Windows расширения pgsql
должны быть предварительно загружены официальным дистрибутивом PHP. Просто отредактируйте свой php.ini
и раскомментируйте extension=pdo_pgsql.so
линий 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
. Это должно с надеждой решить любые проблемы. Для получения дополнительной информации см .:
Для PDOException: could not find driver
для MySQL
, и если это ОС на базе Debian
,
sudo apt-get -y install php5-mysql
Я понимаю, что это старый вопрос, но я нашел его в поиске Google, поэтому я собираюсь идти дальше и отвечать на случай, если кто-то еще столкнется с этим. Я нахожусь на Mac и имею ту же проблему, но решил ее, используя HomeBrew . После того, как вы его установили, вы можете просто запустить эту команду:
brew install php56-pdo-pgsql
И замените 56 любой версией PHP, которую вы используете, без десятичной точки.
Для PHP 7 в Ubuntu вы также можете:
sudo apt-get install php7.0-pgsql
Итак, теперь вы можете не раскомментировать строки в php.ini
UPD: У меня такая же ошибка, поэтому проблема не в драйвере. Я изменил свой database.ini
, но каждый раз, когда я видел ошибку. И я меняю конфигурацию базы данных в .env
и ошибки ушли.
Я была такая же проблема. Это то, что сработало для меня.
Есть 2 файла php.ini:
ПРИМЕЧАНИЕ. Это использование моей версии PHP и Apache, изменения в соответствии с вашими.
Файл php.ini, расположенный в обеих папках, – это то, что вам нужно обновить, расширения:
Это то, что вам нужно раскомментировать (удалить символ;).
Перезапустите Wamp и командную строку.
Надеюсь, это сработает для вас :).
Это сработало для меня:
$ sudo apt-get install php-gd php-mysql
Для тех, кто хочет использовать Postgresql в OpenSuse (и co), попробуйте следующее:
zypper --no-refresh in php5-pgsql
установите значение по умолчанию 'default' => 'sqlite';
check – http://three.laravel.com/docs/database/config
и это – настройка PostgreSQL с Laravel в MAMP
Старая нить я знаю, но я потерял пару часов своей жизни с этим. Вам также необходимо установить информацию о БД в файл .env. Вам здесь не нужно указывать драйвер, потому что используется значение по умолчанию, указанное в файле database.php (я думаю). Я боролся, потому что в DB_CONNECTION=mysql
был DB_CONNECTION=mysql
и я использовал pgsql.
Это сработало для меня:
$ sudo apt-get -y install php5.6-pgsql $ sudo service apache2 restart
Я работаю с 32-битным Ubuntu 14
В моем случае у меня было две версии PHP. Так что все, что мне нужно было сделать, это использовать
$ /opt/lampp/bin/php artisan serve
вместо
$ php artisan serve
sudo apt-get install php7.1-pgsql