Check constraint 'board_chk_3' is violated. 에러 해결하기

o_z·2024년 2월 9일

현재 팀 프로젝트에서 게시판 관련된 기능들을 내가 담당하고 있다. 먼저 게시글 작성부분 service를 구축하고 테스트 코드를 작성했는데 그동안 못봤던 에러다.
로그를 자세히 읽어보니, board 테이블에 insert 쿼리를 날리려는데 'board_chk_3'라는 제약 조건을 어긴 쿼리를 날렸다는 뜻이다.
MySQL에 들어가 아래와 같은 쿼리로 board 테이블 생성 시 제약 조건들을 확인했다.

SHOW CREATE TABLE board;

내가 어긴 제약 조건은 'board_chk_3'이다. purpose로 들어갈 수 있는 값이 0,1 밖에 없는데 내가 다른 값을 넣었다는 것이다.
purpose가 enum으로 총 4개 값을 가질 수 있게 설계를 했는데, 생각해보니 내가 초기에 2개만 값을 넣어놨었다. 초기 상태만 반영되어 있고 최근에 enum 값을 4개로 늘린건 테이블 제약 조건에 반영이 안됐었나 보다.

그래서 ALTER 문을 사용해 purpose의 enum 값으로 사용할 수 있는 값들을 수정해줬다.

ALTER TABLE board 
MODIFY COLUMN purpose
ENUM('ACCOMMODATION_SHARING','MEAL','MOVE','TRAVEL','OTHER');

서버 재구동 하고 다시 제약 조건을 확인하면?
제대로 적용되어 바뀌었다!
테스트도 작동 잘 된 걸 확인할 수 있었다.

처음 만난 에러라서 처음에 좀 당황스러웠는데 그래도 제약조건 이름 찾는 방법이나 제약 조건의 무엇을 어겼는지 알 수 있는 길을 찾아서 유익했다!

profile
트러블슈팅과 구현기를 위주로 기록합니다-

0개의 댓글