【问题标题】:Codeigniter PostgreSQL error connecting databaseCodeigniter PostgreSQL错误连接数据库
【发布时间】:2014-04-16 08:49:25
【问题描述】:

我习惯使用 mysql(i) 进行 Codeigniter,但我有一个客户需要连接 PostgreSQL。我尝试了通常的设置并为 Postgre 添加了特定的端口,但我得到了这个错误:

Unable to connect to your database server using the provided settings.

我的代码是这样的:

$active_group = (ENVIRONMENT == 'development') ? 'offline' : 'online';
//Set to 'development' in file: index.php    
$active_record = TRUE;

/**
 * OFFLINE CONFIGURATION
 */

$db['offline']['hostname'] = 'localhost';
$db['offline']['username'] = 'root';
$db['offline']['password'] = 'root';
$db['offline']['database'] = 'testing';
$db['offline']['dbdriver'] = 'postgre';
$db['offline']['dbprefix'] = '';
$db['offline']['pconnect'] = TRUE;
$db['offline']['db_debug'] = TRUE;
$db['offline']['cache_on'] = FALSE;
$db['offline']['cachedir'] = '';
$db['offline']['char_set'] = 'utf8';
$db['offline']['dbcollat'] = 'utf8_general_ci';
$db['offline']['swap_pre'] = '';
$db['offline']['autoinit'] = TRUE;
$db['offline']['stricton'] = FALSE;
$db['offline']['port'] = 5432;

/**
 * ONLINE CONFIGURATION
 */
$db['online']['hostname'] = '?';
$db['online']['username'] = '?';
$db['online']['password'] = '?';
$db['online']['database' .... 
//Continues with online configuration...     

现在我正在使用offline 配置,但无法显示上述错误。我确实尝试将“db_debug”设置为 FALSE,这很有效,但我觉得这只是在跳过重点,我永远不会在离线模式下显示我需要的数据库错误...

我打开了pgAdmin 并连接到同一个数据库并且工作正常。有什么提示吗?

【问题讨论】:

    标签: php codeigniter postgresql


    【解决方案1】:

    如果有问题

    $db['offline']['dbdriver'] = 'postgre'
    

    然后使用

    $db['offline']['dbdriver'] = 'pdo' 
    

    而不是 postgres。

    【讨论】:

      【解决方案2】:

      好的,查看后用户名有错误。 配置不是由我完成的,编写原始用户名的人按照约定使用postres而不是root。

      不幸的是,CI 类没有输出该特定错误,而只是一般性的“无法使用提供的设置连接到您的数据库服务器。”

      很抱歉这个帖子。谢谢大家。

      【讨论】:

        【解决方案3】:

        根据 CodeIgniter DB 驱动程序的documentation page,可用值为mysql, postgres, odbc。因此,将$db['offline']['dbdriver'] 值从postgre 更改为postgres,然后重试。只要您的用户名和密码正确,它应该可以正常连接。

        编辑:还有其他来源表明驱动程序名称实际上是 postgre 而不是 postgres,这与文档相反(真的很遗憾)。所以我建议你试试postgres 和postgresql。如果它仍然无法正常工作,请检查您的 php.ini,并检查您是否取消了 PostgreSQL 模块的注释(搜索 extension=php_pgsql 行)。

        该模块在 Linux 机器上称为 php_pgsql.so,在 Windows 上称为 php_pgsql.dll。

        如果您看到它并且它在行前有 ;,请删除 ; 并重新启动 Apache 服务器(它应该在 Windows 上可用)。如果没有,则需要先安装它,然后将其添加到 php.ini 中。安装因发行版而异,但有很多关于如何在 Linux 机器上安装它的教程。

        【讨论】:

        • Tku。我确实尝试过,但这不起作用。错误:遇到 PHP 错误严重性:警告消息:require_once(.../system/database/drivers/postgres/postgres_driver.php):无法打开流:没有这样的文件或目录文件名:database/DB.php 行号:140 看起来实际上是postgre 而不是postgres 从这里:ellislab.com/forums/viewthread/131807/#925186
        猜你喜欢
        • 1970-01-01
        • 2013-08-28
        • 1970-01-01
        • 2016-07-04
        • 2017-10-21
        • 2011-10-21
        • 1970-01-01
        • 2014-08-24
        • 1970-01-01
        相关资源
        最近更新 更多