带有消息“找不到驱动程序”的 PostgreSql 'PDOException'

Posted

技术标签:

【中文标题】带有消息“找不到驱动程序”的 PostgreSql \'PDOException\'【英文标题】: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 (***.com/a/53661888/5279996) 在另一个类似的出版物中。总帐 【参考方案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文件中的pgsqlpdo-pgsql扩展

最后,输入:

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

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

【讨论】:

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

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

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

    确保在尝试查看结果之前重新启动 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 个小时来解决这个问题。请检查以下内容以解决此问题。

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

    extension=pgsql

    extension=pdo_pgsql

    重启你的 apache2 服务器

    sudo service apache2 restart

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

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

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

【讨论】:

【参考方案10】:

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

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

【讨论】:

以上是关于带有消息“找不到驱动程序”的 PostgreSql 'PDOException'的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL 迁移失败并出现错误消息“找不到驱动程序”

Laravel:错误 [PDOException]:在 PostgreSQL 中找不到驱动程序?

我尝试在 laravel 上使用 postgresql 但找不到驱动程序(SQL: select * from "users" where "id" = 4 l

致命错误:未捕获的异常“PDOException”和消息“找不到驱动程序”

Symfony 5异常找不到驱动程序

Yii2异常'yii db Exception',消息'找不到驱动程序'