2014-07-10 32 views
0

即时尝试连接CI中的多个数据库。无法连接第二个数据库,因为新连接位于不同的服务器中。 第1步:database.php中Codeigniter多数据库连接面临错误

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

$db['default']['hostname'] = 'localhost'; //www.maestromindsolutions.com 
$db['default']['username'] = 'maestrom_XXX'; 
$db['default']['password'] = 'XXXXXX'; 
$db['default']['database'] = 'maestrom_XXX'; 
$db['default']['dbdriver'] = 'mysql'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = FALSE; 
$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['newdb']['hostname'] = '49.50.76.69:2083'; //www.bazaarzone.com 
$db['newdb']['username'] = 'bazaarzo_XXX'; 
$db['newdb']['password'] = 'XXXXXXXX'; 
$db['newdb']['database'] = 'bazaarzo_XXX'; 
$db['newdb']['dbdriver'] = 'mysql'; 
$db['newdb']['dbprefix'] = ''; 
$db['newdb']['pconnect'] = FALSE; 
$db['newdb']['db_debug'] = TRUE; 
$db['newdb']['cache_on'] = FALSE; 
$db['newdb']['cachedir'] = ''; 
$db['newdb']['char_set'] = 'utf8'; 
$db['newdb']['dbcollat'] = 'utf8_general_ci'; 
$db['newdb']['swap_pre'] = ''; 
$db['newdb']['autoinit'] = TRUE; 
$db['newdb']['stricton'] = FALSE; 

步骤2:然后,我所做的变化/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); 
} 

步骤3:最后我提到的新的数据库连接模型页:

$data_contact=array(
     'enq_id'=>$enq_id, 
     'enq_name'=>$this->input->post('name'), 
     'enq_mobile'=>$this->input->post('mobile'), 
     'enq_email'=>$this->input->post('email'), 
     'is_active'=>'1' 
     ); 

     $query=$this->db->insert('enquiry',$data_contact); 

     // load second database 
     $this->newdb = $this->load->database(newdb, true); 
     $query=$this->newdb->insert('enquiry',$data_contact); 
     return $query; 

步骤4:当我执行接触形式我得到以下错误:

A Database Error Occurred 
Unable to connect to your database server using the provided settings. 

Filename: core/Loader.php 

Line Number: 224 

请帮我解决这个问题,为什么多个数据库不能与不同的服务器一起工作? 谢谢Stackflow ..

+0

任何一个请帮我解决这个问题 – Muralidharank

回答

0

我还没有测试过这个。我已经给出了它应该如何工作的方式,而不对核心文件进行任何更改。单独的配置和对象分开的数据库连接。

$config['hostname'] = "localhost"; 
$config['username'] = "myusername"; 
$config['password'] = "mypassword"; 
$config['database'] = "mydatabase"; 
$config['dbdriver'] = "mysql"; 
$config['dbprefix'] = ""; 
$config['pconnect'] = FALSE; 
$config['db_debug'] = TRUE; 
$config['cache_on'] = FALSE; 
$config['cachedir'] = ""; 
$config['char_set'] = "utf8"; 
$config['dbcollat'] = "utf8_general_ci"; 

$db1 = $this->load->database($config, TRUE); 

$config['hostname'] = "localhost"; 
$config['username'] = "myusername"; 
$config['password'] = "mypassword"; 
$config['database'] = "mydatabase"; 
$config['dbdriver'] = "mysql"; 
$config['dbprefix'] = ""; 
$config['pconnect'] = FALSE; 
$config['db_debug'] = TRUE; 
$config['cache_on'] = FALSE; 
$config['cachedir'] = ""; 
$config['char_set'] = "utf8"; 
$config['dbcollat'] = "utf8_general_ci"; 

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

然后你可以运行查询,如

$db1->query(); 
$db2->result(); 
+0

我尝试了上述解决方案,但不是为我工作。感谢您的答复 – Muralidharank

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

这是设置组名称的一部分。注意'default'db数组的第一个参数是['default']。您只需要添加:

$active_group = 'newdb'; 
$active_record = TRUE; 

返回到第二个连接的顶部。

或者,您可以在模型中进行手动连接设置。我只是建议,如果你不打算在多个页面上使用数据库。

https://ellislab.com/codeigniter/user-guide/database/configuration.html

0
$config['db_debug'] = TRUE; 

试试上面的代码更改为

$config['db_debug'] = FALSE;