【问题标题】:PostgreSql 'PDOException' with message 'could not find driver'带有消息“找不到驱动程序”的 PostgreSql 'PDOException'
【发布时间】:2012-04-22 12:35:07
【问题描述】:

pdo 在 mysql 上运行良好,但在 pgsql 上它给出错误 'PDOException' with message 'could not find driver' 我已经安装了 php5-pgsql 包,其中还包括 pdo_pgsql

http://packages.debian.org/sid/php5-pgsql

这个包提供了一个直接从 PHP 脚本连接 PostgreSQL 数据库的模块。它还包括用于 PHP 数据对象扩展的 pdo_pgsql 模块。

我的 dsn 是 pgsql:dbname=DB;host=192.168.0.2 我正在使用 Ubuntu 10.04

【问题讨论】:

  • 抱歉,我检查了错误的服务器。它的 Gentoo 和这里的 postgresql 没有安装。
  • 请版主尽可能删除问题
  • 关于您自己的问题,您可以通过单击问题底部的相应链接自行删除它们
  • 我也遇到了这个错误。我的问题是我使用类似于 Heroku 的格式通过 DSN 进行连接:虽然它显示“postgre:”,但 PDO 的正确驱动程序是“pgsql:”
  • 查看我的How to Answer (stackoverflow.com/a/53661888/5279996) 在另一个类似的出版物中。总帐

标签: php postgresql ubuntu pdo


【解决方案1】:

确保您取消了在主 php.ini 文件中告诉 php Postgres 驱动程序在哪里(通常是 extension=pgsql.so)的行。

【讨论】:

    【解决方案2】:

    1) 您是否在php.ini (extension=pgsql.so) 中启用了pgsql.so?

    2) 你是否在 192.168.0.2 接口上监听 Postgresql? (可以netstat -tpln查看)

    3) 您如何验证您对 Postgresql 的访问权限?

    【讨论】:

    • 我必须先完成sudo systemctl restart php-fpm.service,然后才能工作。
    【解决方案3】:

    我有同样的问题。首先 - 检查它是否在 php.ini 中启用。取消注释extension=php_pdo_pgsql...

    比设置扩展目录!!

    extension_dir = "ext" ; for your case it could be other dir.
    

    更改配置后不要忘记重启服务器。

    【讨论】:

      【解决方案4】:

      将 libpq.dll 从 PHP 目录复制到 Apache24\bin(或您可以安装的任何位置)。

      【讨论】:

        【解决方案5】:

        此消息表示您需要在 PHP 中安装和/或激活 postgresql 扩展

        这个解决方案对我有用: 安装 postgresql 扩展

        [sudo] apt-get install php-pgsql
        

        之后,激活它,取消注释etc/php/$PHP_VERSION/apache2/php.ini文件中的pgsql和pdo-pgsql扩展

        最后,输入:

        [sudo] /etc/init.d/apache2 restart
        

        如果您使用 apache,例如我的情况,要重新启动 apache 服务器...

        【讨论】:

        • 值得注意的是,在我最初安装的 php 中,有 2 个 php.ini 文件。不知道要取消注释哪个,我都做了。
        【解决方案6】:

        这是我为解决问题所做的。

        1. 编辑php.ini 并从extension=pdo_pgsql 中删除;。此外,将extension=pgsql.so 添加到php.ini 文件中。

        2. 确保在尝试查看结果之前重新启动 Apache 服务器。

        【讨论】:

          【解决方案7】:

          尽量去掉前面的分号

          扩展=pgsql
          扩展=pgsql.so

          包含在您的 php.ini 文件中

          您可以从 XAMPP 控制面板执行此操作。

          【讨论】:

            【解决方案8】:

            当您没有在 Apache 和 PHP 的同一台机器上安装 postgresql 时;您必须在 Linux (in Windows yes) 中手动安装 php-pgsql 并且 不必在 php.ini 中添加扩展,因为会生成冗余并且这不起作用(签入 error.log )。

            $ sudo apt install php-pgsql
            

            然后您可以检查是否存在自动启用的扩展:

            $ sudo nano /etc/php/7.0/apache2/conf.d/10-pdo.ini
            

            观察:在phpinfo() 中,您将找到目录conf.d/ 和文件error.log

            GL

            【讨论】:

              【解决方案9】:

              我在使用另一种解决方案时遇到了同样的问题。我浪费了大约 4 个小时来解决这个问题。请检查以下内容以解决此问题。

              1. 检查php.ini文件并从该行删除分号

                extension=pgsql

                extension=pdo_pgsql

              2. 重启你的 apache2 服务器

                sudo service apache2 restart

              3. 检查您的 PDO 驱动程序是否已在 localhost phpinfo() 中更新

              我做对了所有事情,但我仍然遇到这个问题。你知道为什么吗?因为我安装了几个版本的php。所以我在我的 php cli 中运行 php7.4,但 localhost 在 php7.2 上运行。因此,请务必检查您的 php 版本。

              1. 在 localhost 和终端 cli 上检查您的 php 版本

              【讨论】:

                【解决方案10】:

                只需运行 php --ini 并在输出中查找 Loaded Configuration File 以获取 CLI 使用的 php.ini 的位置

                然后检查您是否正确启用了扩展。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2020-01-21
                  • 2015-03-12
                  • 2016-12-28
                  • 2014-01-23
                  • 2014-05-01
                  • 1970-01-01
                  • 2019-07-01
                  • 2017-02-20
                  相关资源
                  最近更新 更多