【问题标题】:Error Using Multiple Database In CodeIgniter在 CodeIgniter 中使用多个数据库时出错
【发布时间】:2010-01-24 04:32:09
【问题描述】:

我正在尝试在 CI 中实现多个数据库。我的代码在这里:

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

为什么会发生这种情况?请帮帮我

【问题讨论】:

  • stackoverflow.com/questions/2124993/… 的副本。请不要重复您的问题,您可以编辑现有问题以提供更多详细信息。
  • 我发现这篇文章比其他文章更有帮助。谢谢阿迪。

标签: php codeigniter frameworks


【解决方案1】:

我找到了解决办法。

将数据库配置或数据库配置之一的 pconnect 设置为 FALSE。

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

或

$db['default']['pconnect'] = TRUE;
$db['smf']['pconnect'] = FALSE;
//and vice versa 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 2011-11-27
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    相关资源
    最近更新 更多