【问题标题】:Facing Error in Codeigniter Multiple Database Connection在 Codeigniter 多数据库连接中面临错误
【发布时间】:2014-07-10 06:13:07
【问题描述】:

我正在尝试在 CI 中连接多个数据库。无法连接第二个数据库,因为新连接位于不同的服务器中。 第一步:数据库.php

$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..

【问题讨论】:

  • 任何人请帮我解决这个问题

标签: php mysql database codeigniter


【解决方案1】:

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

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

【讨论】:

  • 我尝试了上述解决方案,但对我不起作用。感谢您的回复
【解决方案2】:
$active_group = 'default';
$active_record = TRUE;

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

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

到第二个连接的顶部。

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

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

【讨论】:

    【解决方案3】:
    $config['db_debug'] = TRUE;
    

    试着把上面的代码改成

    $config['db_debug'] = FALSE;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-28
      • 2016-07-04
      • 1970-01-01
      • 2017-10-21
      • 2011-10-21
      • 1970-01-01
      相关资源
      最近更新 更多