제목 | Oracle DB에 로우 인서트 후 해당 로우가 사라지는 현상 | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 버닝 | 작성시각 | 2016/11/09 15:13:18 |
|
|||
안녕하세요. 버그를 잡고있는데 어려움을 겪고있어 이렇게 질문드립니다.
문제 현상과 관련 환경은 이렇습니다. - Oracle DB에 로우 인서트 후 웹앱에서 리스트 출력 시 해당 로우가 사라진다. - 인서트 후 디비 툴(데이터그립)에서 인서트된 로우가 확인되고 웹앱에서 리스트 출력 시 디비 툴에서 인서트 된 로우가 사라진다. - 소스코드 상에서 last_query() 함수를 통해 실행된 쿼리를 얻어 디비 툴에서 실행하면 웹앱에서 리스트 출력 시 로우가 사라지는 현상은 발생하지 않는다 - 소스코드상의 디비 계정과 디비툴에서의 계정은 동일하다.
현재 제가 의심하고 있는 부분은 커밋 부분입니다.
그래서 제가 시도한 주된 액션들은 아래와 같습니다. 1. $this->db->trans_start(); 쿼리 $this->db->trans_complete();
2. $this->db->trans_begin(); 쿼리 $this->db->trans_commit()
3. $this->db->query("Main Query"); $this->db->query("COMMIT");
혹시 커밋 이슈 외에 다른 부분을 의심할 수 있는 원인이 있을지 또는 제가 취한 액션들 외에 다른 액션들이 있을지 CI 선배님들의 조언을 구하고 싶습니다. 감사합니다.
|
|||
다음글 | update_batch 이용시 문의 드립니다. (1) | ||
이전글 | 페이지네이션 attribute 관련 질문입니다. (4) | ||
변종원(웅파)
/
2016/11/09 16:41:40 /
추천
0
|
버닝
/
2016/11/09 18:05:15 /
추천
0
답변 감사합니다. 트랜잭션 사이의 쿼리는 하나의 쿼리이고 로직의 결과도 정상적이지만 같은 결과가 발생하네요. $this->db->trans_start(); $this->db->insert($this->table, $data); $this->db->trans_complete(); if ($this->db->trans_status() === false) { return '실패';// generate an error... or use the log_message() function to log your error } else { $this->db->trans_commit(); return '성공'; } 위 코드에서 insert 부분도 query() 함수를 사용해봤지만 같은 결과이네요. 무언가 다른 원인이 있을까요? |
변종원(웅파)
/
2016/11/09 18:17:00 /
추천
0
시스템 파일중 DB_active_rec.php에서 트랜잭션 부분에서 결과값들을 찍어보셔야 할 것 같습니다. 참고하세요. http://blog.robotekindo.net/2010/05/codeigniter-oracle-transaction-bug.html |
트랜잭션 사이의 쿼리중 하나라도 실패하면 모두 롤백됩니다.
위 소스를 적용해보세요.