I am trying to connect two database in Codeigniter. I came accross this link Codeigniter - multiple database connections and setup the database as per my requirements. Now the problem is that only the default database is active. Here's the code
Model
function __construct()
{
parent::__construct();
$this->db_2 = $this->load->database('database2', TRUE);
$this->load->database();
}
function get_details()
{
$result1 = $this->db->query("select columnname1 from tablename")->result();
$result2 = $this->db_2->query("select columnname2 from tablename")->result();
}
I am getting a error because columnname2
exists only in database2 table and not in database1 table.Error: Unknown column 'columnname2' in 'field list'
Database.php
$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'root';
$db['database2']['password'] = '';
$db['database2']['database'] = 'database2';
$db['database2']['dbdriver'] = 'mysql';
$db['database2']['dbprefix'] = '';
$db['database2']['pconnect'] = TRUE;
$db['database2']['db_debug'] = TRUE;
$db['database2']['cache_on'] = FALSE;
$db['database2']['cachedir'] = '';
$db['database2']['char_set'] = 'utf8';
$db['database2']['dbcollat'] = 'utf8_general_ci';
$db['database2']['swap_pre'] = '';
$db['database2']['autoinit'] = TRUE;
$db['database2']['stricton'] = FALSE;
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '';
$db['default']['database'] = 'database1';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
UPDATE: If i use the following
function __construct()
{
parent::__construct();
$this->load->database();
$this->db_2 = $this->load->database('database2', TRUE);
}
database2 is taken as active by CI and all the queries are connected to database 2 even though $this->db->query();
is used to specify the queries.