0

I'm trying to implement mutiple database in CI. My code Is here:

//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";

The model is

//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();
    }
}

Controller tester

    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());
    }
}

There are some error, The first database uses the second database name. But it still use it's prefix.

The error is

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

If I just load one model ..., It works. 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());
    }
}

Why this could be happened ? Help me please

2
  • Duplicate of stackoverflow.com/questions/2124993/…. Please do not duplicate your questions, you can instead edit your existing question to provide more details. Commented Jan 25, 2010 at 9:18
  • I found this post more helpful than the other post. Thanks Adi. Commented Jan 29, 2012 at 4:53

1 Answer 1

2

I've found the solution.

Set pconnect to FALSE for both database configuration or one of database configuration.

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

OR

$db['default']['pconnect'] = TRUE;
$db['smf']['pconnect'] = FALSE;
//and vice versa 
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.