2013-09-28 3 views
2

나는 codeigniter 2.1.4을 사용합니다. 내 세션을 내 database1에 기록하고 나는 database2 데이터를 쿼리합니다. 그러나 세션은 database2 테이블을 찾을 수 없습니다. 세션을 database2에 녹음하고 싶지 않습니다.codeigniter 두 데이터베이스를 연결

오류 메시지.

A Database Error Occurred 

Error Number: 1146 

Table 'database2.sessions' doesn't exist 

SELECT * FROM (`sessions`) WHERE `session_id` = 'fd384ac44b1fe1c073cfc23185esdfda' AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36' 

Filename: libraries/Session.php 

Line Number: 213 

database.php.

$active_group = 'default'; 
$active_record = TRUE; 

$db['default']['hostname'] = 'localhost'; 
$db['default']['username'] = 'root'; 
$db['default']['password'] = '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; 

$db['database2']['hostname'] = 'localhost'; 
$db['database2']['username'] = 'root'; 
$db['database2']['password'] = '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'] = FALSE; 
$db['database2']['stricton'] = FALSE; 

내 내 쿼리 database2 코드 config.php

$config['sess_cookie_name']  = 'ci_session'; 
$config['sess_expiration']  = 7200; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = TRUE; 
$config['sess_use_database'] = TRUE; 
$config['sess_table_name']  = 'sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

.

function ip_get($ip) { 
    $db_rentcar = $this->load->database('rent_car', TRUE); 
    $db_rentcar->from('ip'); 
    $db_rentcar->where('ip_ip', $ip); 
    if($db_rentcar->count_all_results() == 1) { 
     $query = $db_rentcar->get_where('ip', array('ip_ip' => $ip)); 
     return $query->row_array(); 
    } else { 
     return array('ip_name' => 'user1', 'ip_type' => 1); 
    } 
    } 

이 코드를 Session.php에 추가하려고합니다.

$this->CI->load->database('database1', TRUE); 

오류가 발생합니다. 문제를 해결하는 방법? 감사.

An Error Was Encountered 

You have specified an invalid database connection group. 

답변

1

을 찾을 나는 답을 발견했다.

$DB1 = $this->load->database('group_one', TRUE); 
$DB2 = $this->load->database('group_two', TRUE); 

참고 : 다음과 같이 동시에 당신이 그렇게 할 수있는 하나 개 이상의 데이터베이스에 연결해야하는 경우 여러 데이터베이스

를 연결

function simple_query($sql) 
{ 
    if (! $this->conn_id) 
    { 
     $this->initialize(); 
    } 

    $this->db_select(); // Add this code 

    return $this->_execute($sql); 
} 

참조 here

3

활성 DB는 다음 중 하나가 수동으로 연결하거나 항상 연결해야하는 경우 My_Controller에 넣어 연결하려면 database.php 의 마지막을 정의하는 마지막 하나입니다. 참고로

$this->db2 = $this->CI->load->database('db2', TRUE); 

자세한 내용을 here

+1

나'$ this-> DB2에 대한 일 공식 문서를보기 = $ this-> load-> database ('db2', TRUE); – Chad

2

변경 "group_one"및 "group_two"단어를 연결하려는 특정 그룹 이름에 연결하십시오 (또는 위에 표시된대로 연결 값을 전달할 수 있음).

두 번째 매개 변수를 TRUE (부울 값)로 설정하면 함수가 데이터베이스 개체를 반환합니다.

이 방법으로 연결하면이 가이드 전체에서 사용되는 구문 대신 개체 이름을 사용하여 명령을 내릴 수 있습니다. 다른 단어보다는 실행 명령에서 :

$this->db->query(); 
$this->db->result(); 
etc... 

은 대신 사용합니다 :

$DB1->query(); 
$DB1->result(); 
etc... 

컨트롤러에서이 퍼팅 https://www.codeigniter.com/userguide3/database/connecting.html#connecting-to-multiple-databases

관련 문제