| 제목 | 트랜잭션이 전혀 먹히질 않습니다 --; | ||
|---|---|---|---|
| 글쓴이 | 에카 | 작성시각 | 2013/12/31 01:13:28 |
|
|
|||
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
|
|
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로 확인해 보세요.
|