连接数据库的Codeigniter PostgreSQL错误

时间:2014-04-16 08:49:26

标签: php codeigniter postgresql

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

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

enter image description here

我的代码就是这样:

$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"假,这是有效的,但我觉得只是吝啬这一点,我永远不会出现我在离线模式下需要的数据库错误...

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

3 个答案:

答案 0 :(得分:1)

如果

有问题
$db['offline']['dbdriver'] = 'postgre'

然后使用

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

而不是postgres。

答案 1 :(得分:0)

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

修改:还有其他一些消息来源表明驱动程序名称实际上是postgre而不是postgres,这与文档相反(真的很遗憾)。因此,我建议您尝试使用postgrespostgresql。如果它仍然无法正常工作,请检查您的php.ini,并检查您是否已取消注释PostgreSQL模块(搜索extension=php_pgsql行)。

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

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

答案 2 :(得分:0)

好的,看了之后用户名出错了。 配置不是由我完成的,并且撰写原始用户名的人会按照约定提出postres而不是root

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

对不起该帖子。感谢大家。