【问题标题】:codeigniter connect two databasecodeigniter 连接两个数据库
【发布时间】:2013-10-04 11:49:20
【问题描述】:

我使用codeigniter 2.1.4。 我将会话记录到我的database1,并查询database2 数据。但是会话将找不到database2 表。我不想将会话记录到database2

错误信息。

A Database Error Occurred

Error Number: 1146

Table 'database2.sessions' doesn't exist

SELECT * FROM (`sessions`) WHERE `session_id` = 'fd384ac44b1fe1c073cfc23185esdfda' AND `user_agent` = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.76 Safari/537.36'

Filename: libraries/Session.php

Line Number: 213

我的database.php

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

$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'password';
$db['default']['database'] = 'database1';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$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['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

$db['database2']['hostname'] = 'localhost';
$db['database2']['username'] = 'root';
$db['database2']['password'] = 'password';
$db['database2']['database'] = 'database2';
$db['database2']['dbdriver'] = 'mysql';
$db['database2']['dbprefix'] = '';
$db['database2']['pconnect'] = TRUE;
$db['database2']['db_debug'] = TRUE;
$db['database2']['cache_on'] = FALSE;
$db['database2']['cachedir'] = '';
$db['database2']['char_set'] = 'utf8';
$db['database2']['dbcollat'] = 'utf8_general_ci';
$db['database2']['swap_pre'] = '';
$db['database2']['autoinit'] = FALSE;
$db['database2']['stricton'] = FALSE;

我的config.php

$config['sess_cookie_name']     = 'ci_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

这是我的查询database2 代码。

  function ip_get($ip) {
    $db_rentcar = $this->load->database('rent_car', TRUE);
    $db_rentcar->from('ip');
    $db_rentcar->where('ip_ip', $ip);
    if($db_rentcar->count_all_results() == 1) {
      $query = $db_rentcar->get_where('ip', array('ip_ip' => $ip));
      return $query->row_array();
    } else {
      return array('ip_name' => 'user1', 'ip_type' => 1);
    }
  }

我已尝试将此代码添加到Session.php

$this->CI->load->database('database1', TRUE);

错误变成了。如何解决问题?谢谢。

An Error Was Encountered

You have specified an invalid database connection group.

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    连接到多个数据库

    如果您需要同时连接多个数据库,您可以这样做:

    $DB1 = $this->load->database('group_one', TRUE);
    $DB2 = $this->load->database('group_two', TRUE);
    

    注意:将单词“group_one”和“group_two”更改为您要连接到的特定组名称(或者您可以传递上述连接值)。

    通过将第二个参数设置为 TRUE(布尔值),函数将返回数据库对象。

    当您以这种方式连接时,您将使用您的对象名称而不是本指南中使用的语法来发出命令。换句话说,而不是发出命令:

    $this->db->query();
    $this->db->result();
    etc...
    

    您将改为使用:

    $DB1->query();
    $DB1->result();
    etc...
    

    查看官方文档https://www.codeigniter.com/userguide3/database/connecting.html#connecting-to-multiple-databases

    【讨论】:

      【解决方案2】:

      我找到了答案。

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

      参考here

      【讨论】:

        【解决方案3】:

        您的活动数据库是您在 database.php 中定义的最后一个数据库 要连接下一个,请手动连接,如果您总是需要连接,请将其放在 My_Controller 中。

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

        更多详细信息供您参考here

        【讨论】:

        • 把它放在控制器中对我有用$this->db2 = $this->load->database('db2', TRUE);
        猜你喜欢
        • 2015-11-26
        • 2012-01-06
        • 1970-01-01
        • 2013-05-09
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        相关资源
        最近更新 更多