본문 바로가기
프로그래밍/Codeigniter

[Codeigniter] 다중 DB 사용하기

by o테리o 2011. 11. 16.
application/config/database.php에 DB를 설정한다

$active_group = 'default'; <-- 디폴트 db설정
$active_record = TRUE;

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'user1';
$db['default']['password'] = '****';
$db['default']['database'] = 'db1';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = TRUE;
$db['default']['cachedir'] = '/cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

$db['t']['hostname'] = 'localhost';
$db['t']['username'] = 'user2';
$db['t']['password'] = '****';
$db['t']['database'] = 'user2';
$db['t']['dbdriver'] = 'mysql';
$db['t']['dbprefix'] = '';
$db['t']['pconnect'] = FALSE;
$db['t']['db_debug'] = TRUE;
$db['t']['cache_on'] = TRUE;
$db['t']['cachedir'] = '/cache';
$db['t']['char_set'] = 'utf8';
$db['t']['dbcollat'] = 'utf8_general_ci';
$db['t']['swap_pre'] = '';
$db['t']['autoinit'] = TRUE;
$db['t']['stricton'] = FALSE;

이렇게 설정을 하면 2개의 디비가 설정이되고 $this->load->database() 를 하면 기본적으로 default를 사용한다.
다른 데이터 베이스 설정은 $this->load->database('t')로 ..

문제는 CodeIgniter 2.0.3에서

요청이 발생해 인스턴스가 생성이되고
$this->load->database()를 이용해 default 설정의 디비에서 데이터를 가져오면 다른 디비는 못쓴다는;;
$this->db=nul; $this->load->database('t')로 해도 안되고;;

system/core에 손을 댔다 -ㅅ-;
system/core/Loader.php 에 function database 가 있다


 // Do we even need to load the database class?
if (class_exists('CI_DB') AND $return == FALSE AND $active_record == NULL AND isset($CI->db) AND is_object($CI->db))
{
            return FALSE;
 }


위에 부분을 주석처리;;