Я сталкиваюсь с этой проблемой для подключения к другой базе данных.
Ниже мой код. Я определил две базы данных, но когда я пытаюсь получить все записи, я получаю сообщение об ошибке ниже:
Table 'crm.cdr_Feb2015' doesn't exist.
даже если я загрузил базу данных в контроллер, она использует базу данных по умолчанию для выбора деталей.
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '*****';
$db['default']['database'] = 'crm';
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = TRUE;
$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'] = TRUE;
$db['asterisk']['hostname'] = 'localhost';
$db['asterisk']['username'] = 'root';
$db['asterisk']['password'] = '*****';
$db['asterisk']['database'] = 'asterisk';
$db['asterisk']['dbdriver'] = 'mysql';
$db['asterisk']['dbprefix'] = '';
$db['asterisk']['pconnect'] = FALSE;
$db['asterisk']['db_debug'] = TRUE;
$db['asterisk']['cache_on'] = TRUE;
$db['asterisk']['cachedir'] = '';
$db['asterisk']['char_set'] = 'utf8';
$db['asterisk']['dbcollat'] = 'utf8_general_ci';
$db['asterisk']['swap_pre'] = '';
$db['asterisk']['autoinit'] = TRUE;
$db['asterisk']['stricton'] = TRUE;
Теперь в моем контроллере я загрузил базу данных:
public function index()
{
$this->load->database('asterisk', TRUE);
$test =$this->cdr_m->get();
var_dump($test);
}
Файл модели:
<?php
class Cdr_M extends MY_Model
{
protected $_table_name = 'cdr_Feb2015';
protected $_order_by = '';
protected $_timestamps = TRUE;
function __construct()
{
parent::__construct();
}
}
Попробуй это:
public function index()
{
$this->db = $this->load->database('asterisk', TRUE);
$test =$this->cdr_m->get();
var_dump($test);
}
$this
это экземпляр вашей базы данных по умолчанию. Вы должны назначить в другую переменную
$this->db2 = $this->load->database('asterisk', TRUE);
$test = $this->db2->cdr_m->get();
var_dump($test);
Config / database.php
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = 'xxxxx';
$db['default']['database'] = 'CloudAgent';
$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['db2']['hostname'] = 'localhost';
$db['db2']['username'] = 'root';
$db['db2']['password'] = 'xxxxx';
$db['db2']['database'] = 'Asterisk';
$db['db2']['dbdriver'] = 'mysql';
$db['db2']['dbprefix'] = '';
$db['db2']['pconnect'] = TRUE;
$db['db2']['db_debug'] = TRUE;
$db['db2']['cache_on'] = FALSE;
$db['db2']['cachedir'] = '';
$db['db2']['char_set'] = 'utf8';
$db['db2']['dbcollat'] = 'utf8_general_ci';
$db['db2']['swap_pre'] = '';
$db['db2']['autoinit'] = TRUE;
$db['db2']['stricton'] = FALSE;
Контроллер:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Analytics extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->database();
$this->db2 = $this->load->database('db2',TRUE);
}
}
Запрос:
$in_calls = $this->db2->query('SELECT DATE_FORMAT(query_time,"%Y-%m-%d %h:%i%p") AS FromHour,total_calls AS callcount FROM LiveCalls WHERE DATE(query_time) = DATE(NOW())');
LiveCalls
стол принадлежит Asterisk
база данных.