带有消息“找不到驱动程序”的 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
文件中的pgsql
和pdo-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