1

我曾尝试将 PostgreSQL 与 Yii 连接,但正在显示

CDbConnection 未能打开数据库连接。

在日志中显示

error   exception.CDbException  

找不到驱动程序

我的代码

'db'=>array(
    'tablePrefix'=>'',
    'connectionString' => 'pgsql:host=localhost;port=5432;dbname=postgres',
    'username'=>'postgres',
    'password'=>'postgres',
    'charset'=>'UTF8',
),
4

5 回答 5

2

Yii 数据库组件构建在 PHP PDO 之上。所以这是要检查的可能性列表

检查 PostgreSQL 和 PostgreSQL 的 PDO 扩展是否已安装并正常工作。那个端口也是正确的。你可以测试简单的PHP Script 来测试

下面是一些可能相似的链接

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

PDOException“找不到驱动程序”</a>

在 Linux (Ubuntu/Debian) 上安装 PDO

为 postgres Ubuntu 安装 pdo

https://serverfault.com/questions/89970/how-to-install-postgresql-extension-for-pdo-in-linux

视窗

http://blog.lysender.com/2010/08/php-and-postgresql-on-windows/

无法加载 Apache php 5.3 postgreSQL 驱动程序

有关问题的官方 PHP 信息

http://php.net/manual/en/pdo.installation.php

http://www.php.net/manual/en/ref.pdo-pgsql.php

于 2012-10-30T11:10:47.913 回答
1

已解决的问题...通过添加

LoadFile "C:/wamp/bin/php/php5.3.5/libpq.dll"

到 httpd.conf 文件。现在 phpinfo() 正在显示 pgsql PDO。

谢谢...

于 2012-10-30T14:45:43.340 回答
1

如果您在 ubuntu 中工作,请确保您已安装 pgsql 库

sudo apt-get install php-pgsql
sudo service apache2 restart

确保在控制台和主本地有这个数组之后

'components' => [
    'log' => [
        'targets' => [
            [
                'class' => 'yii\log\FileTarget',
                'levels' => ['error', 'warning'],
            ],
        ],
    ],
    'db' => [
        'class' => 'yii\db\Connection',
        'dsn' => 'pgsql:host=localhost;port=5432;dbname=yourdb',
        'username' => 'user',
        'password' => 'pw',
        'charset' => 'utf8',
    ],],
于 2016-11-22T08:07:38.663 回答
0

php_pdo_pgsql就我而言,这是在 WAMP中启用扩展的情况

于 2015-03-11T15:56:05.037 回答
0

对于那些在同样问题上苦苦挣扎的人,我做了解决。环境 Yii2 服务器:LAMP 堆栈 7.1 问题 找不到驱动程序,即“requirements.php”显示警告“PDO PostgreSQL 扩展警告所有与 DB 相关的类都需要 PostgreSQL 数据库。” 我注意到 pdo_pgsql.so 没有与 bitnami 打包在一起,所以我在网上搜索它或尝试定位是否安装在 /usr/lib/php 中的任何 php 版本上

  1. 将该文件复制到lampstack-7.1.10-1/php/lib/php/extensions。
  2. 现在转到lampstack php.ini "lampstack-7.1.10-1/php/etc/php.ini" 现在放置这一行 "extension=pdo_pgsql.so" remove ; 如果注释掉NB,你可以指向绝对路径“/usr/lib/php/pdo_pgsql.so”,如果它存在的话
  3. 重启 Lamp apache 服务器
  4. 访问requirement.php,如果您看到““PDO PostgreSQL 扩展 通过 了所有与数据库相关的类,对于 PostgreSQL 数据库是必需的。””
于 2020-08-22T08:01:12.740 回答