질문 Q #12231
atal error: Call to undefined method CI_DB_oci8_driver: 에러...
니로 2015-05-27 09:36:03

Fatal error: Call to undefined method CI_DB_oci8_driver::select() in F:\Project\b2b\application\models\auction_model.php on line 18

에러 내용인데요.. 이렇게 나오는 이유가 궁금해요..ㅠㅠ

어떻게 해결해야 할지도 알려주시면 감사합니다..!




<?php
class auction_model extends CI_Model{
    
    private $table_name = array
    (
            'category'        => 'BBE_PUMBUN',
            'test'        => 'board_files',
    );
    
    public function __construct()
    {
        parent::__construct();
    }
    //20150526
        //메뉴 카테고리 가져오기
        public function category()
        {
        
            $this->db->select('COUNT(*)');
            $this->db->from($this->table_name['category']);
            $query = $this->db->get();
            
            
            echo $this->db->last_query();
            
            
            if ($query->num_rows() > 0)
            {
                foreach ($query->result() as $row)
                {
                    $data[] = $row;
                }
                return $data;
            }
            else
            {
                return array();
            }
            
            
        }
        
    
    
    
}
/* End of file auction_model */
/* Location: ./application/models/auction_model.php */



해당 페이지 소스입니다..
답변 14
#1 변종원(웅파) 2015-05-27 10:17:38
18번 라인에 해당하는 함수 소스를 올려주셔야 뭐가 잘못된건지 알려드릴 수 있습니다.
#2 니로 2015-05-27 10:20:17
해당 페이지 소스를 올렸는데요..

저라인은 단순이 select 문이 있는 라인입니다 ㅎㅎ....
#3 한대승(불의회상) 2015-05-27 10:40:38
오라클 디비에 접속이 안된것 같은데요. ^^
#4 옴므파탈 2015-05-27 10:40:47
단순한 count 를 알고 싶으신거라면, count_all_results() 를 사용해보세요.. 
#5 옴므파탈 2015-05-27 10:41:30
저도 저런 류의 에러구문을 만났을때는 database.php 에 설정이 잘못되었을 때였던것 같습니다. 
#6 니로 2015-05-27 10:45:07
음.. 답변감사합니다 데이터베이스 설정한번 다시 봐야겠네요 ㅎㅎ;
#7 니로 2015-05-27 11:10:30
$active_group = 'default';
$active_record = FALSE;

$host = "ip주소";
$id      = "유저명";
$pass = "패스워드";
$mode = true;

$db['default']['hostname'] = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = ".$host.")(PORT = 1521)))(CONNECT_DATA =(SID = ORCL)(SERVICE_NAME = ORCL)))"; 
$db['default']['username'] = (!$mode) ? exec('/usr/local/src/crypt/entin_crypt DECODE ID ' . $id) : $id;       
$db['default']['password'] = (!$mode) ? exec('/usr/local/src/crypt/entin_crypt DECODE ID ' . $pass) : $pass;  
$db['default']['database'] = ""; 
$db['default']['dbdriver'] = "oci8";    
$db['default']['dbprefix'] = ""; 
$db['default']['pconnect'] = FALSE; 
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = ""; 
$db['default']['char_set'] = "utf-8"; 
$db['default']['dbcollat'] = "utf8_general_ci";
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;


이렇게 설정되어있는데 잘못된 부분이 있는건가요...?
#8 옴므파탈 2015-05-27 11:43:58
(DESCRIPTION =    
    (ADDRESS_LIST =
        (ADDRESS =
            (PROTOCOL = TCP)
            (HOST = ".$host.")
            (PORT = 1521)
        )
    )
    (CONNECT_DATA =
        (SID = ORCL)
        (SERVICE_NAME = ORCL)
    )
)

오라클은 원래 이런식의 hostname 을 가지나요?
저는 mysql 만 써서 "localhost" 만 적어주면 됐었는데..
@한대승 님의 말처럼 접속이 정상적이지 않을때 저런 에러가 나타나곤 했습니다. 
#9 옴므파탈 2015-05-27 11:44:27
다시보니, target database 지정이 안되어 있네요. 
$db['default']['database'] = ""; <-- 데이터베이스 지정해주세요. 
#10 니로 2015-05-27 12:19:58
음.. 데이터베이스 지정은 안해도 되는거같아요.. 다른 소스들도 그렇게 사용하고 잇거든요.ㅠㅠ
지정해봣는데도 같은 에러가 발생하네요..
참...ㅠㅠ 설정값들은 여태 해오는거처럼 다른것들과 같은 형식으로 햇는데 안되다니...
#11 한대승(불의회상) 2015-05-27 12:59:49
OCI8을 사용할 일이 없어서.. ^^
아래 URL 확인해 보세요.
http://manojbethel.blogspot.kr/2010/09/using-oracle-with-php-and-codeigniter.html
#12 니로 2015-05-27 16:36:20
별짓을 다해봐도 안되네요 ㅠ_ㅠ

멘탈붕괴..ㅠ-ㅠ
#13 변종원(웅파) 2015-05-27 17:03:04
php와 오라클 연동은 되어 있는거죠?

http://zetawiki.com/wiki/PHP에서_오라클_DB_사용
#14 니로 2015-05-27 17:42:19
하.해결햇습니다!!!!

database.php 에서 

$active_record = TRUE; 옵션이 FALSE로 되어잇어서 TRUE로 바꿧더니 되네요...ㅎㅎㅎㅎ!