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

 布尔熊 发布于 2022-12-28 05:34

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

),

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

[InvalidArgumentException]
Database [mysql] not configured.


编辑: 当尝试做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:

    系统属性 - >高级选项卡 - >环境变量

    在窗口下半部分的"系统变量"组中,滚动查找PATH条目.

    选择它,然后单击编辑

    在现有条目的末尾,将完整路径放到postgres bin目录中.bin文件夹应位于postgres安装目录的根目录中.

    重新启动任何打开的命令提示,或者确定,重新启动计算机.

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

http://php.net/manual/en/install.pecl.windows.php

http://webcheatsheet.com/php/install_and_configure.php#extsetup


Nasif Md. Ta.. 46

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

sudo apt-get -y install php5-mysql

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


Святослав Па.. 25

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

sudo apt-get install php7.0-pgsql

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

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

6 个回答
  • 务必配置'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:

      系统属性 - >高级选项卡 - >环境变量

      在窗口下半部分的"系统变量"组中,滚动查找PATH条目.

      选择它,然后单击编辑

      在现有条目的末尾,将完整路径放到postgres bin目录中.bin文件夹应位于postgres安装目录的根目录中.

      重新启动任何打开的命令提示,或者确定,重新启动计算机.

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

    http://php.net/manual/en/install.pecl.windows.php

    http://webcheatsheet.com/php/install_and_configure.php#extsetup

    2022-12-28 05:50 回答
  • 对于PDOException: could not find driverfor MySQL,如果是Debian基于OS,

    sudo apt-get -y install php5-mysql
    

    2022-12-28 05:55 回答
  • 对于Ubuntu中的PHP 7,您还可以:

    sudo apt-get install php7.0-pgsql
    

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

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

    2022-12-28 05:58 回答
  • 这对我有用:

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

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

    brew install php56-pdo-pgsql
    

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

    2022-12-28 06:09 回答
  • 我遇到过同样的问题.这对我有用.

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

    希望它对你有用:).

    2022-12-28 06:20 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有