카카오테크 부트캠프/프로젝트

수동 SQL 삽입시 발생한 트러블 슈팅

bubhyun 2025. 5. 14. 10:51
728x90

문제 1.

배포를 오늘 진행하기로 했지만 ai 담당자가 휴가로 인해 오늘 해설집을 추가를 못하고 배포를 해야하는 상황 발생. 따라서 오늘의 코딩 해설을 직접 sql 삽입하기로 진행했다. 하지만 기존에 들어가있던 해설 문제와 동일한 문제를 올려버리는 실수를 저질렀다.

 

기존에 설문을 진행했던 내용이 겹처 2가지 문제에 대해 모두 설문을 해야하지만 한가지 설문이 겹처 설문 데이터가 저장이 되지 않는 오류 가 발생하게 됨.

 

설문조사 테이블을 지우고 싶었지만, 건드리면 유저 정보를 건드려 엉킬 것 같기에 이를 해결하기 위해 문제 해설 테이블에 중복되지 않는 해설로 update 변경.  

새로운 문제들로 구성됐기에 설문이 정상적으로 작동되야 했지만, 여전히 오류가 발생했다. 혹시나 하는 마음에 나머지 하나의 문제도 새로운 해설로 업데이트 진행했지만 여전히 설문이 기록되지 않는 문제 발생.

 

이유를 찾던 중 새로운 문제들로 구성됐기에 설문이 정상적으로 작동되야 했지만, 참조된 테이블에 데이터를 완전히 채워 넣지 않아 문제 발생했다는 사실을 발견.

 

 

 

찾아보니, 다른 팀원이 수동으로 문제 해설만을 추가하고, 참조 테이블에 추가하는 작업을 마무리 하지 못한채 서버 종료. 까먹고 작업을 하지 않아 problem_set_id에 공백(22~26)이 생김. 따라서 비워진 데이터를 추가하기 위해 문제 번호 탐색 시작.

 

문제2.

발생된 또 다른 문제. problem_id로 문제를 조회해도 엉뚱한 문제로 연결이 되었다. 찾아보니 problem_id를 문제 테이블의 id를 연결시켰기에 문제 테이블에서 따로 number라는 문제를 조회해야 했다. 문제를 4개만 찾으면 됐기에 어렵진 않았지만 향후 문제가 생긴다면 머리가 터질 것 같기에 수정이 필요해 보임.

 

 

 

다음날, 아침 팀원이 모여 erd 구조를 확인한 뒤, 다행히 설문조사 테이블은 참조 당하는 테이블이 아니기에 결국 문제가 없는 걸 확인하고, 13일에 진행한 설문 조사 데이터 삭제, 추가 되지 않은 데이터에 관련한 테이블의 행들을 삭제하기로 진행 아래의 두 테이블의 5월 13일 문제에 대해 삭제도 추가로 진행.

-- 외래 키 제약 일시 해제
SET FOREIGN_KEY_CHECKS = 0;

-- 관련 테이블 순서대로 TRUNCATE (자식 → 부모 순)

TRUNCATE TABLE koco.survey;
TRUNCATE TABLE koco.user_algorithm_stats;

-- 외래 키 제약 복구
SET FOREIGN_KEY_CHECKS = 1;

-------------------------------------------

SET SQL_SAFE_UPDATES = 0;

SELECT * FROM koco.survey
WHERE answered_at > '2025-05-13';


SET SQL_SAFE_UPDATES = 1;

 

설문이 제대로 돌아가는 모습

 

728x90