728x90
주어진 업무를 진행하면서 느꼈던 감정과 생각을 정리하는 글입니다.
Postgresql을 사용하는 프로젝트를 하면서 테이블의 컬럼을 추가, 수정하는 등의 작업을 했는데 최종일이 다가오기 전에 해당 부분을 정리하여 보고해야했다. 보고 형식은 Alter 문으로 된 쿼리문을 제출하면 되는 거였는데 신입이라 그런건지 아니면 그냥 내가 이상한건진 모르겠지만 또 혼자서 문제를 만들고 해결했다. 글로 설명하기엔 난해하지만 어떻게는 보는 사람이 편할 수 있도록 적어보겠다.
- A 테이블에 있는 seq 컬럼의 데이터 타입을 serial4 에서 다른 테이블과의 통일성을 위해 int4로 변경 (DBeaver GUI 사용)
- DBeaver 응답없음 > 강제종료 > 재시작 시 해당 테이블과 관련된 기능들이 동작 X
- 테이블이 망가졌단 생각에 동일한 테이블을 생성하여 기존 테이블을 삭제하고 새로운 테이블명을 변경하여 대체하는 방안을 생각해냄
- 새로운 테이블(B) 생성 (DBeaver GUI 사용)
- 기존 테이블을 삭제 (DBeaver GUI 사용) - 2번과 같은 오류 발생
- 찾아보니 실행중인 프로세스를 조회하고 종료할 수 있는 기능이 있다는걸 알게됨.
- 조회해보니 3-2번의 쿼리문이 active 상태로 남아있는것을 확인하고 종료시킴 (SQL 쿼리문 사용)
- 이 후 1번 쿼리문도 active로 남아있는 것을 확인 후 종료시킴 (SQL 쿼리문 사용)
-- 실행중인 프로세스 조회
SELECT * FROM pg_stat_activity ORDER BY query_start where state = 'active';
-- 실행중인 프로세스 종료 -- pid 는 프로세스 조회 시 나오는 칼럼 중 하나
SELECT pg_cancel_backend(pid);
- 오류들은 모두 사라졌기에 3-1번을 통해 만들었던 테이블(B)을 삭제 (DBeaver GUI 사용) - 2번과 같은 오류 발생
- 4번 반복 (SQL 쿼리문 사용) > 해결 되지 않음
- 외래키가 있는 테이블을 삭제할 경우 발생할 수 있는 오류 중 하나
- B의 외래키 및 관련 컬럼을 삭제 (DBeaver GUI 사용) - 2번과 같은 오류 발생
- 4번 반복 후 쿼리문으로 삭제
- 쿼리문으로 B 테이블 삭제
- create를 제외한 drop, alter을 DBeaver GUI로 실행시켰을 때 오류가 나는 것을 확인한 후에는 모든 과정을 SQL로 처리함
- 오류를 모두 수정하고 alter 문으로된 보고서를 제출함.
글을 적으면서 돌아보니 왜 혼자 일을 만들면서 고생을 했는지 모르겠다. 그래도 느낀점이나 배운점이 아주없진 않다. 먼저 GUI 같이 편한 기능들을 사용함에 있어서 조금은 신중히 사용해야겠다는 생각이 들었다. 물론 DBeaver가 잘못되었다기 보단 그걸 사용한 사용자가 잘못 사용했을 가능성이 높긴하지만 GUI로 할땐 오류가 발생하고 쿼리문으로 하면 오류가 없다는게 이번 회고의 핵심이기에 쿼리문을 자주 이용하여 익숙해지는 습관을 들일 필요가 있을 것 같다. 그리고 두 번째는 회사에서 DB 설정을 한 것인지 아니면 postgresql의 기본 설정인지 실행 중인 프로세스를 정지시켜서 문제를 해결하는 법을 배웠다. 이후에 비슷한 문제가 발생했을 경우 원인을 찾는데 시간을 단축시킬 수 있는 힌트를 얻은 것 같다.
'회고' 카테고리의 다른 글
egov 3.6 > egov Boot 4.2 회고 (with security) (0) | 2024.05.24 |
---|---|
20240321-회고(스프링 웹소켓 오류 회고 / 오류 해결완료 / 원인파악 중) (0) | 2024.03.21 |
JWT 에 대한 생각 정리 (0) | 2024.02.29 |
20231208 회고 (0) | 2023.12.08 |
20231019 업무 회고 (1) | 2023.10.19 |