CI 묻고 답하기

제목 2개이상의 데이터베이스 union 시키기
글쓴이 뫄뫄잉뿌 작성시각 2016/06/27 15:26:44
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 19196   RSS

구글링으로 어찌저찌 했는데..

SELECT command deniedto user 'a_user'@'localhost' for table 'table'

이라는 에러가 납니다.

 

데이터 설정에서 pconnect는 모두 FLASE,

$this->db 로 사용되는 default DB는 c라고 했을 때,

model 에서

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

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

선언.


$this->a->select('name, title',false);
$this->a->from('a.table');
$aGet = $this->a->get();
$aQuery = $this->a->last_query();


$this->b->select('name, title',false);
$this->b->from('b.table');
$bGet = $this->b->get();
$bQuery = $this->b->last_query();

$this->db->query("($aQuery ) UNION ALL ($bQuery ) ");

 

이런식으로 union all을 만들었습니다.

같은 model.php에서 a DB에 접근해서 정보를 가져오는 다른 function은 처리가 잘됩니다..

근데 union all을 통해 하면 접근 권한이 없다고 하네요..ㅜㅜ

default DB에서 a,b DB의 정보를 뽑아와서 그런건가...

데이터베이스는 같은 서버에 있습니다.

어떻게 짜야 결과를 잘 가져올수 있을까요?ㅜㅜ 조언부탑합니다.

 다음글 자바스크립트에서 배열넘기는거 질문드리겠습니다. (1)
 이전글 디폴트컨트롤러로 되어있는클래스내에서의 코드인데 (4)

댓글

한대승(불의회상) / 2016/06/27 17:22:29 / 추천 0
2개의 DB에 union 문을 사용 할 수 없습니다.
변종원(웅파) / 2016/06/27 18:44:02 / 추천 0

물리적으로 떨어져있는 db는 federated engine이란 것을 이용해서 같은 공간에 있는 것처럼 처리할 수 있습니다.

같은 물리서버에 있는 것처럼 모든 쿼리가 가능합니다. 

뫄뫄잉뿌 / 2016/06/28 08:08:43 / 추천 0

@한대승님 http://www.codeigniter-kr.org/bbs/view/source?idx=7481&view_category=&lists_style= 이 링크를 참고해서 했는데.. union 되는거 아닌가요..?

뫄뫄잉뿌 / 2016/06/28 08:09:22 / 추천 0
@변종원님 그럼 뷰로 만들어서 select 후 union은 가능한가요?ㅜㅜ
한대승(불의회상) / 2016/06/28 09:48:28 / 추천 0

@뫄뫄잉뿌 같은 DB서버내에서 접근 권한이 있다는 전제하에 가능 한 것이죠.

각각 다른 DB서버의 DB는 union이 불가 합니다.

변종원(웅파) / 2016/06/28 11:11:27 / 추천 0
뫄뫄잉뿌/ mysql federated engine 검색해보세요.
뫄뫄잉뿌 / 2016/06/28 13:03:49 / 추천 0
@한대승님 변종원님 답변 감사합니다!! 일단 4개의 DB에서 한번씩 가져와서 array로 처리는 했어요.. 시간이 오래걸릴거라 생각되서 union으로 하려고 했는데 생각했던거만큼 오래는 안걸리네용 ㅎㅎ 답변 주셔서 감사합니다! mysql federated engine도 알아볼께요!