我是新使用postgresql的,我已经使用Codeigniter一年了。
我有一个小型postgresql数据库,我想从Codeigniter调用它。
在我的database.php文件中,我有这样的设置:
$active_group = 'default';
$query_builder = TRUE;
$db['default'] = array(
'dsn' => 'pgsql:host=localhost;port=5432;dbname=test;user=postgres;password=aPass',
// 'dsn' => '',
'hostname' => 'localhost',
'username' => 'postgres',
'password' => 'aPass',
'database' => 'test',
'dbdriver' => '',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
// 'port' => '5432'
);
在控制器中,我具有以下功能:
public function dbtest(){
$this->load->database();
$feeds = $this->db->get('vts_feeds');
echo $feeds;die();
}
我得到的结果是:
An Error Was Encountered
You have not selected a database type to connect to.
为什么不起作用?
发布于 2015-04-14 07:07:56
试着设置,
dbdriver数据库类型。ie: mysql、postgres、odbc等必须用小写指定。
更多信息:guide/database/configuration.html
编辑:在postgres中为PDO
尝试此配置
$db['default']['hostname'] = 'pgsql:host=localhost;dbname=yourdb'; //set host
$db['default']['username'] = 'your username'; //set username
$db['default']['password'] = 'your password'; //set password
$db['default']['database'] = 'your database'; //set databse
$db['default']['dbdriver'] = 'pdo'; //set driver here
发布于 2015-04-14 07:35:18
删除'dsn‘字符串并更改为配置数组中的'dbdriver' => 'postgre'
。
尽管CI文档声明值应该是'postgres'
,但如果在system>database>drivers
中检查目录和文件名,文件夹实际上称为'postgre'
、文件名'postgre_driver.php'
和类'CI_DB_postgre_driver'
,因此我们可以假设文档在这里是错误的。奇怪的是,这之前没有抬起它丑陋的头
发布于 2016-10-23 15:20:21
我现在就这么做了。你只要离开:
$db['default']['dsn'] = '';
并设置:
$db['default']['dbdriver'] = 'postgre';
https://stackoverflow.com/questions/29630851
复制相似问题