Laravel:错误[PDOException]:无法在PostgreSQL中查找驱动程序

Hyp*_*ion 65 php database postgresql syntax-error laravel

我正在尝试通过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'   => '',
    ),

),
Run Code Online (Sandbox Code Playgroud)

如果我删除MySQL路径,我会得到:

[InvalidArgumentException]
Database [mysql] not configured.
Run Code Online (Sandbox Code Playgroud)


编辑: 当尝试做php artisan迁移时,我得到'PDOException:找不到驱动程序'.我正在使用WAMP而且我在Win8.1中.使用PostgreSQL作为数据库.


编辑: 已经尝试了一系列替代解决方案,但我仍然应该解决这个问题.该php.ini文件在Apache,WAMP(来自php文件夹)和PostgreSQL中进行了检查.这extension_dir是正确的 - >extension_dir = "c:/wamp/bin/php/php5.5.12/ext/"

extension=pdo_pgsql.dllextension=pgsql.dll是注释.

完成PATH"系统变量"中的技巧并重新启动.没有机会.

感谢你目前的帮助.

这些是我的司机php_pdo_driver.hphp_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"" - without-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"

小智 72

务必配置'default'密钥app/config/database.php

对于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设置为正确的目录.它应该是PHP安装目录中名为extensionsext类似的文件夹.

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

如果仍然出现异常,则可能需要将postgres \bin目录添加到PATH:

  1. 系统属性 - >高级选项卡 - >环境变量
  2. 在窗口下半部分的"系统变量"组中,滚动查找PATH条目.
  3. 选择它,然后单击编辑
  4. 在现有条目的末尾,将完整路径放到postgres bin目录中.bin文件夹应位于postgres安装目录的根目录中.
  5. 重新启动任何打开的命令提示,或者确定,重新启动计算机.

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


Nas*_*jim 46

对于PDOException: could not find driverfor MySQL,如果是Debian基于OS,

sudo apt-get -y install php5-mysql
Run Code Online (Sandbox Code Playgroud)

  • 如果你在现代的基于Debian的操作系统上使用PostgreSQL,那就是`sudo apt-get -y install php7.0-pgsql`. (6认同)

Свя*_*нко 25

对于Ubuntu中的PHP 7,您还可以:

sudo apt-get install php7.0-pgsql
Run Code Online (Sandbox Code Playgroud)

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

UPD: 我有同样的错误,所以问题不在驱动程序中.我改变了我database.ini,但每次看到错误.我改变了数据库配置.env并且错误消失了.

  • 解决了这个,在我的情况下使用`sudo apt-get install php7.1-pgsql` (2认同)

Luc*_*ky 8

这对我有用:

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


Bil*_*ner 7

我意识到这是一个老问题,但我在谷歌搜索中发现它,所以我会继续回答,以防万一其他人遇到这个问题.我在Mac上遇到了同样的问题,但是使用HomeBrew解决了这个问题.安装完成后,您可以运行以下命令:

brew install php56-pdo-pgsql
Run Code Online (Sandbox Code Playgroud)

并使用任何版本的PHP替换56而不使用小数点.


小智 5

我遇到过同样的问题.这对我有用.

有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和命令提示符.

希望它对你有用:).