CI 묻고 답하기

제목 트랜잭션이 전혀 먹히질 않습니다 --;
글쓴이 에카 작성시각 2013/12/31 01:13:28
댓글 : 7 추천 : 0 스크랩 : 0 조회수 : 16568   RSS
if ($this->input->post()) {
 $this->db->trans_start();

        /* 소스는 스킵 */

if( ( $tag_processed_list !== false ) && ( count($tag_processed_list) != 0) ) {
        /* 조건문에 맞을 경우 */
 $this->db->trans_commit();
 redirect('/board/lists/' . $boardId);
} else {
 $this->db->trans_rollback();
 redirect('/board/upload/' . $boardId . '/?error=3');
}

}
소스코드는 정말 상당히 간단합니다. 특이사항이라면 DB쿼리문을 항시 액티브 레코드로 보낸다는점. 그 외엔 없습니다.

 DB는 MariaDB에 해당 테이블은 InnoDB로 트랜잭션은 정상적으로 구동되는 환경입니다.

분명 게시글 검증을 하고 문제가 생기면 롤백하고 페이지가 이동되어야되는데 왜 이동이 안될까요. 멘탈 붕괴될것같습니다 ㅠ_ㅠ
 다음글 application 여러개 사용시 디렉토리로 접근 방... (1)
 이전글 페이지 세크멘트 관련 질문입니다. (4)

댓글

포자촉수 / 2013/12/31 07:09:58 / 추천 0
제가 트랜잭션을 써봤을때는 문제가 없었습니다. 개인적으로 redirect를 써본적은 없지만 코드이그나이터의 log_message() 를 이용, tail 로 잡아서 한번 확인해보시는건 어떨까요?
들국화 / 2013/12/31 11:14:50 / 추천 0
메뉴얼 읽어 보세요.
잘못썼네요.
http://codeigniter-kr.org/user_guide_2.1.0/database/transactions.html
criuce / 2013/12/31 13:18:07 / 추천 0
commit rollback 사용하시려면 시작을 trans_start() 가 아니라 trans_begin() 으로 사용하셔야 할거에요.
메뉴얼 읽어보세요~
에카 / 2013/12/31 14:02:55 / 추천 0
 헉 이런 start가 아니라 begin이였군요. 아 쪽팔려라 ㅠㅠ..
근데 begin으로 해도 정상작동 하질 않네요?
혹시나 작동을 안하는게 아닐까 싶어서 

if( ! $this->db->trans_begin() ) {
 show_404();
}
이런식으로 해봐도 잘되는데 롤백이 안되네요. 하 이건 왜 또 이럴까요 --;
들국화 / 2013/12/31 16:15:47 / 추천 0
 에카// 아래 코드를 왜 쓰는지 모르겠네요...
if( ! $this->db->trans_begin() ) {
 show_404();
}

동작 하는지 확인 하고 싶으면 Insert, update 후에 롤백 해 보세요.
$this->db->trans_rollback();


에카 / 2014/01/01 14:53:02 / 추천 0
 들국화님 // 아래 코드는 트랜잭션이 시작되는지 안되는지 여부를 체크해보기 위해서 사용한것입니다. 데이터 반환값을 보면 boolean으로 반환되더라구요 ^^;
저기 스킵된 소스에 INSERT가 이미 이루어져있구요. 리다이렉트가 '/board/upload/' . $boardId . '/?error=3' 로 되는걸 보면 조건문 문젠 아닌데, 게시물이 작성되었는지 확인하려고 목록보면 꼭 INSERT가 완료된 상태로 되어있네요
들국화 / 2014/01/02 14:05:56 / 추천 0
affected_row로 확인해 보세요.