Laravel:错误:在PostgreSQL中找不到驱动程序

我试图通过Laravel与PostgreSQL数据库连接,为了做一个PHP的工匠迁移,但似乎并没有被指示,因为它正在读取MySQL的数据库名称。

这里是来自database.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' => '', ), ), 

如果我删除MySQLpath,我会得到:

 [InvalidArgumentException] Database [mysql] not configured. 

编辑:当试图做php艺术家迁移时,我得到一个'PDOException:找不到驱动程序'。 我正在使用WAMP,我在Win8.1。 使用PostgreSQL作为数据库。


编辑:已经尝试了一系列的替代解决scheme,但我仍然应该得到解决。 在Apache,WAMP(从php文件夹)和PostgreSQL中检查php.ini文件。 extension_dir是正确的,因为它是 – > extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"

extension=pdo_pgsql.dllextension=pgsql.dll未注释。

在“系统variables”中完成PATH技巧并重新启动。 没有机会。

感谢迄今为止的帮助。

这些是我的驱动程序php_pdo_driver.hphp_pdo.hC:\Program Files (x86)\PostgreSQL\EnterpriseDB-ApachePHP\php\SDK\include\ext\pdo

来自phpinfo的信息:

PHP版本5.5.12

编译器MSVC11(Visual C ++ 2012)configuration命令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-analyze“”–with-pgo“

确保在app/config/database.phpconfiguration'default'

对于postgres,这将是'default' => 'postgres',

如果您收到[PDOException] could not find driver错误,请检查是否安装了正确的PHP扩展。 您需要安装并启用pdo_pgsql.sopgsql.so 。 有关如何做到这一点的说明因操作系统而异。

对于Windows, pgsql扩展应该使用官方的PHP发行版预先下载。 只需编辑你的php.ini并取消注释extension=pdo_pgsql.soextension=pgsql.so

另外,在php.ini ,确保extension_dir被设置为正确的目录。 它应该是一个名为extensions的文件夹,或者在您的PHP安装目录中的类似文件夹。

最后,将libpq.dllC:\wamp\bin\php\php5.*\复制到C:\wamp\bin\apache*\bin并通过WampServer界面重新启动所有服务。

如果仍然有exception,则可能需要将postgres \bin目录添加到PATH

  1. 系统属性 – >高级选项卡 – >环境variables
  2. 在窗口下半部分的“系统variables”组中,滚动查找PATH条目。
  3. select它并单击编辑
  4. 在现有条目的最后,将完整path放到您的postgres bin目录中。 bin文件夹应该位于postgres安装目录的根目录下。
  5. 重新启动任何打开的命令提示符,或者确定,重新启动计算机。

这应该有希望解决任何问题。 有关更多信息,请参阅

对于PDOException: could not find driverMySQL ,如果它是基于Debian的操作系统,

 sudo apt-get -y install php5-mysql 

我意识到这是一个古老的问题,但我发现它在谷歌search,所以我会继续前进,并回答以防万一有人跑过这个。 我在Mac上,有同样的问题,但通过使用HomeBrew解决了。 一旦你安装了它,你可以运行这个命令:

 brew install php56-pdo-pgsql 

并用任何版本的PHPreplace56没有小数点。

对于Ubuntu中的PHP 7,你也可以这样做:

 sudo apt-get install php7.0-pgsql 

所以,现在你可以不要在php.ini取消注释

UPD:我有一个相同的错误,所以问题不在驱动程序中。 我改变了我的database.ini ,但每次我看到一个错误。 而且我更改.env数据库configuration和错误消失了。

我遇到过同样的问题。 这是为我工作。

有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 php-gd php-mysql

对于那些想在OpenSuse(和co)上使用Postgresql的人,请尝试以下方法:

 zypper --no-refresh in php5-pgsql 

设置默认的'default' => 'sqlite';

检查 – http://three.laravel.com/docs/database/config

这个 – 在MAMP中用Laravel设置PostgreSQL

我知道老线程,但是我用这个失去了几个小时的生命。 您还需要在.env文件中设置数据库信息。 你不必在这里指定驱动程序,因为使用了database.php中指定的默认值(我认为)。 我很挣扎,因为它在.env文件中有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