이제 프로젝트를 진행하며 발생하는 문제 해결과정을 정리해보려고 한다.. 파이팅 !
문제 없이 돌아가고 있던 우리의 개발 서버가 갑자기 작동하지 않게 되었다
작업이 끝난 브랜치를 머지하고 나서 ci/cd를 통해 다시 배포를 진행한 것인데,
이 이후에 문제가 발생해서 당연히 새로 머지한 브랜치에 문제가 있다고 생각을 했다.
하지만 머지하기 전에 다 테스트를 진행하고 머지를 한 것이어서, 서버가 돌아가지 않을 이유가 없었고, 도대체 어디서 문제가 발생한 것인지 로그를 뒤적 거려보았다.
에러 로그 발견 !
alter table if exists study add column start_date timestamp(6) not null
2024-11-29 15:51:18 [main] WARN o.h.t.s.i.ExceptionHandlerLoggedImpl - GenerationTarget encountered exception accepting command : Error executing DDL " alter table if exists study add column start_date timestamp(6) not null" via JDBC [ERROR: column "start_date" of relation "study" contains null
이 부분을 살펴보면 study 테이블의 start_date 컬럼은 not null이나 현재 데이터베이스엔 null 값이 들어있기 때문에
alter table에 실패했다는 것이다...
문제 발생 원인
study 담당 팀원이 새롭게 브랜치를 파서 작업하고 있었다
-> 해당 브랜치에서 특정 컬럼의 NotNull 속성을 없애고 rds를 업데이트 시킴
-> rds에 start_date 컬럼에 null 값이 들어감
-> 메인 브랜치에는 start_date가 NotNull로 설정돼있음
-> 메인 브랜치를 기준으로 ci/cd를 진행
-> start_date는 NotNull인데 Null값이 들어가 있어!
-> 에러 발생
이런 흐름이었던 것이다.
아직 개발 단계여서 테스트 데이터만 들어있기 때문에 간단하게 문제가 되는 행만 삭제하고
문제를 해결해주었다.
결론
협업을 할 때 공용 데이터베이스를 사용하면 충돌이 발생할 수 있다.
이를 예방하기 위해 개발 단계에서는 h2 데이터베이스를 사용하도록 하자!
'☃️❄️개발일지, 트러블슈팅❄️☃️' 카테고리의 다른 글
[개발일지] Auto Scaling Group 적용과 무중단 배포(Rolling Update) 및 CI/CD 파이프라인 설정 (0) | 2025.01.14 |
---|---|
[개발일지] webp 확장자를 통한 이미지 제공 최적화 작업 (0) | 2025.01.03 |
[트러블 슈팅] 로그인 방식과 보안에 대한 고찰 - 2 (jwt 토큰과 XSS, CSRF 공격, 액세스 토큰과 리프레시 토큰의 저장 위치) (4) | 2024.12.03 |
[트러블 슈팅] 로그인 방식과 보안에 대한 고찰 - 1 (세션 로그인 방식과 jwt 토큰 발급 방식) (1) | 2024.12.02 |
[개발일지] TAVE 공식 홈페이지 개발 1. (개발, 백엔드, 브랜칭 전략, 커밋 컨벤션, 로깅 규칙, PR 템플릿) (2) | 2024.10.07 |