Codeigniter - Using Multiple Databases

后端 未结 6 708
甜味超标
甜味超标 2020-11-29 04:01

database.php:

$db[\'default\'][\'hostname\'] = \"192.168.2.104\";
$db[\'default\'][\'username\'] = \"webuser\";
$db[\'default\'][\'password\         


        
相关标签:
6条回答
  • 2020-11-29 04:30

    You don’t need to create separate database configurations if you only need to use a different database on the same connection. You can switch to a different database when you need to, like this:

    $this->db->db_select($database2_name);

    CodeIgbiter User Guide

    0 讨论(0)
  • 2020-11-29 04:32

    You may try modifying function CI_Session() in session.php file.

    Replace

    $this->CI->load->database();
    

    with this

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

    In this way, you need not load 2 dbs in all the model files but shall use them directly using objects.

    $this->db1 would be accessing default group db and $this->db2 would be accessing db2 group db. (both db groups should have been defined in database.php)


    Sundar

    0 讨论(0)
  • 2020-11-29 04:42

    currently, codeigniter cannot connect to multiple database in persisten connection. so, you should turn of the persisten of your connections. you may can do this..

    $db['default']['pconnect'] = FALSE;
    
    $db['stats']['pconnect'] = FALSE;
    
    0 讨论(0)
  • 2020-11-29 04:45

    I fix the problem changing the DB_driver.php on the framework.

    In this function I add $this->db_select(); and you never lose your connection again when working with 2 databases.

    function simple_query($sql)
    {
        if ( ! $this->conn_id)
        {
            $this->initialize();
        }
    
        $this->db_select();
    
        return $this->_execute($sql);
    }
    
    0 讨论(0)
  • 2020-11-29 04:48

    Instead of applying the hack as mentioned by Camacho you can also set the 'pconnect'-flag in the database.php file to FALSE for all connections.

    0 讨论(0)
  • 2020-11-29 04:48

    There is a bug in codeigniter. Inserting one line into a class will fix the whole thing. Here is the original source: http://koorb.wordpress.com/2007/11/16/codeigniter-connect-to-multiple-databases/

    ** This fix does not apply to PostgreSQL

    Here is a copy just in case that site goes down.

    The line number has changed. Here is the bug fix from codeigniter:

    start bugfix

    Description

    all of the database calls go to the same database (last one initialized)

    To fix the problem change the simple_query function in /system/database/DB_driver.php:

    function simple_query($sql)
    {
        if ( ! $this->conn_id)
        {
            $this->initialize();
        }
       
        $this->db_select(); //<-----------------  Added this line
        return $this->_execute($sql);
    }
    

    This completely fixes the problem, so you can do stuff like this in a model

    $this->legacy_db = $this->load->database('legacy', true);
    
    0 讨论(0)
提交回复
热议问题