[에러 발생 상황]
회원 탈퇴 진행 시 해당 회원은 실제로 DELETE가 아닌
유저 등급에서 DELETE 등급으로 변경되어야 하는데
변경되지 않고 오류가 발생하였음.

오류가 발생한 원인은 DDL에 있었다.
테이블 생성 시 설정한 속성으로
유저 등급 = USER_ROLE을 설정하고
해당 등급에 'ADMIN', 'MEMBER', 'WITHDRAW'
3가지로 상황으로 정의해 두었다.
그래서 회원 탈퇴 시 유저 등급이 WITHDRAW로 변경되도록
세터를 사용하여 코딩을 진행하였는데, 알고 보니 오탈자로 인해
테이블 속성이 'WITHDRAWN'으로 선언되어 있어
올바르지 않은 입력으로 취급되어 발생한 오류였다.
▼ 기존 코드 (오류 발생)
--컨트롤러에서 보내는 WITHDRAW를 인식할 수 없음
--컬럼에 오탈자로 인한 문제
CREATE TABLE TBL_USER (
USER_ID INT PRIMARY KEY,
-- PK (회원 고유번호)
EMAIL VARCHAR(50) UNIQUE NOT NULL,
-- 이메일 (로그인 ID, 중복 불가) (행의 값이 고유함을 보장하는 UNIQUE 사용)
PASSWORD VARCHAR(20) NOT NULL,
-- 비밀번호
USER_NAME VARCHAR(20) NOT NULL,
-- 이름
ADDRESS VARCHAR(200) NOT NULL,
-- 배송지
USER_ROLE VARCHAR(20) DEFAULT 'MEMBER' CHECK (USER_ROLE IN ('ADMIN', 'MEMBER', 'WITHDRAWN'))
-- 사용자 구분 (비회원 / 회원/ 관리자) CHECK (IN())으로 3가지 상태만 허용
);
UPDATE TBL_USER SET USER_ROLE = 'WITHDRAWN' WHERE USER_ID = 1002;
-- 회원 탈퇴 (WITHDRAW: 탈퇴 상태 표시값)
// SQL과 연동되는 컨트롤러 코드- WITHDRAW 전달
// 로그인 하려는 ID가 탈퇴한 계정일 경우
if (userDTO.getUserRole().equals("WITHDRAW")) {
view.nopePasswordResult();
continue;
}
view.showLoginResult(userDTO != null);
userInfo = userDTO;
아래와 같이 오탈자를 수정하여 테이블 드롭 후
재생성하여 테스트를 진행하였고
정상적으로 작동되는 것을 확인하였다.
▼ 오류 해결 부분
--오탈자 N 제거하여 컬럼명 수정
--테이블 드랍 및 재생성하여 진행
USER_ROLE VARCHAR(20) DEFAULT 'MEMBER' CHECK (USER_ROLE IN ('ADMIN', 'MEMBER', 'WITHDRAW'))
-- 사용자 구분 (비회원 / 회원/ 관리자) CHECK (IN())으로 3가지 상태만 허용
);
UPDATE TBL_USER SET USER_ROLE = 'WITHDRAW' WHERE USER_ID = 1002;
-- 회원 탈퇴 (WITHDRAW: 탈퇴 상태 표시값)
'개주 훈련일지 > 🔥 히노카미 코구라(오류 수정)' 카테고리의 다른 글
| 오류내역) HTTP 상태 404 – 찾을 수 없음 (0) | 2025.11.14 |
|---|---|
| 오류내역) HTTP 상태 404 – 찾을 수 없음 (0) | 2025.11.13 |
| 오류내역) InputMismatchException (0) | 2025.11.10 |
| 오류내역) java.sql.SQLException (0) | 2025.11.04 |
| 오류내역) selectOne 메서드 활용 시 발생한 Controller의 NullPointerException (0) | 2025.11.03 |