2010-01-24 3 views
0

Я пытаюсь реализовать mutiple базу данных в CI. Мой код здесь:Ошибка при использовании нескольких баз данных в CodeIgniter

//database.php 
$active_group = "default"; 
$active_record = TRUE; 

$db['default']['hostname'] = "localhost"; 
$db['default']['username'] = "root"; 
$db['default']['password'] = "root"; 
$db['default']['database'] = "ravelex"; 
$db['default']['dbdriver'] = "mysql"; 
$db['default']['dbprefix'] = "rvx_"; 
$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['smf']['hostname'] = "localhost"; 
$db['smf']['username'] = "root"; 
$db['smf']['password'] = "root"; 
$db['smf']['database'] = "smf"; 
$db['smf']['dbdriver'] = "mysql"; 
$db['smf']['dbprefix'] = "smf_"; 
$db['smf']['pconnect'] = TRUE; 
$db['smf']['db_debug'] = TRUE; 
$db['smf']['cache_on'] = FALSE; 
$db['smf']['cachedir'] = ""; 
$db['smf']['char_set'] = "utf8"; 
$db['smf']['dbcollat'] = "utf8_general_ci"; 

Модель

//user_model.php 
class user_model extends Model { 
    private $ravelex_db; 
    function user_model() { 
     parent::Model(); 
     $this->ravelex_db = $this->load->database('default', TRUE); 
    } 

    function find_all() { 
     print_r($this->ravelex_db); 
     $q = $this->ravelex_db->get('users'); 
     return $q->result(); 
    } 
} 

//smf_user_model.php 
class smf_user_model extends Model { 
    private $smf_db; 

    function smf_user_model() { 
     parent::Model(); 
     $this->smf_db = $this->load->database('smf', TRUE); 
    } 

    function find_all() { 
     $q = $this->smf_db->get('members'); 
     return $q->result(); 
    } 
} 

Контроллер тестер

class mutipledb extends Controller { 

    function mutipledb() { 
     parent::Controller(); 
     $this->load->database(); 
     $this->load->model('user_model'); 
     $this->load->model('smf_user_model'); 
    } 

    function index() { 
     print_r($this->user_model->find_all()); 
     print_r($this->smf_user_model->find_all()); 
    } 
} 

Есть некоторые ошибки, Первая база данных использует второе имя базы данных. Но он все еще использует префикс.

Ошибка

A Database Error Occurred 
Error Number: 1146 
Table 'smf.rvx_users' doesn't exist 
SELECT * FROM (`rvx_users`) 

Если я просто загрузить одну модель ... Это работает. класс mutipledb расширяет контроллер {

function mutipledb() { 
     parent::Controller(); 
     $this->load->database(); 
     //$this->load->model('user_model'); 
     $this->load->model('smf_user_model'); 
    } 

    function index() { 
     //print_r($this->user_model->find_all()); 
     print_r($this->smf_user_model->find_all()); 
    } 
} 

Почему это может быть случилось? Помогите мне пожалуйста

+0

Дубликат http://stackoverflow.com/questions/2124993/mutiple-database-in-codeigniter. Не дублируйте свои вопросы, вместо этого вы можете отредактировать существующий вопрос, чтобы предоставить более подробную информацию. – Groo

+0

Я нашел этот пост более полезным, чем другой пост. Спасибо Ади. –

ответ

2

Я нашел решение.

Установите pconnect в FALSE для конфигурации базы данных или конфигурации базы данных.

$db['default']['pconnect'] = FALSE; 
$db['smf']['pconnect'] = FALSE; 

ИЛИ

$db['default']['pconnect'] = TRUE; 
$db['smf']['pconnect'] = FALSE; 
//and vice versa 
Смежные вопросы