我习惯使用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"假,这是有效的,但我觉得只是吝啬这一点,我永远不会出现我在离线模式下需要的数据库错误...
我打开pgAdmin并连接到同一个数据库并且正常工作。有什么暗示吗?
答案 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
,这与文档相反(真的很遗憾)。因此,我建议您尝试使用postgres
和postgresql
。如果它仍然无法正常工作,请检查您的php.ini,并检查您是否已取消注释PostgreSQL模块(搜索extension=php_pgsql
行)。
该模块在Linux机器上被称为php_pgsql.so
,在Windows上被称为php_pgsql.dll
。
如果您看到它并且在该行之前有;
,请删除;
并重新启动Apache服务器(它应该在Windows上可用)。如果没有,您需要先安装它,然后将其添加到php.ini。安装程序从发行版到发行版各不相同,但有很多关于如何在Linux机器上安装它的教程。
答案 2 :(得分:0)
好的,看了之后用户名出错了。
配置不是由我完成的,并且撰写原始用户名的人会按照约定提出postres
而不是root
。
不幸的是,CI类不输出该特定错误,而只是输出“无法使用提供的设置连接到数据库服务器。”
对不起该帖子。感谢大家。