코딩항해기

[Error/Spring] SQLSyntaxErrorException (+ SQL Exception 정리) 본문

Error solution

[Error/Spring] SQLSyntaxErrorException (+ SQL Exception 정리)

miniBcake 2024. 10. 30. 16:16

 

 

 

해당 에러는 Mapper에서 없는 컬럼을 호출할 때 발생한다. 콘솔 내용을 볼 때 STORE 오타로 인해 발생한 것임을 알 수 있다.

 

정확히는 SQL syntax 규칙을 위반했다는 예외로 대부분의 원인은 오탈자로 인해 발생한다고 한다.

 

SQL 관련 Exception 시리즈

예외 설명 발생 예시
SQLSyntaxErrorException SQL 문법 오류 - 테이블명 오타<br>- WHERE 절 구문 오류<br>- 예약어 사용 실수
SQLNonTransientException 일시적이지 않은 오류(코드 수정 필요) - 테이블/컬럼 없음<br>- 권한 없음
SQLTransientException 일시적인 오류(재시도 가능) - 데드락<br>- 타임아웃<br>- 일시적 연결 끊김
SQLInvalidAuthorizationException 인증 관련 오류 - 잘못된 비밀번호<br>- 계정 잠김
SQLDataException 데이터 관련 오류 - 숫자 형식 오류<br>- 날짜 형식 오류
SQLIntegrityConstraintViolationException 제약조건 위반 - FK 참조 오류<br>- UNIQUE 위반<br>- NOT NULL 위반
SQLTransactionRollbackException 트랜잭션 롤백 발생 - 데드락으로 인한 롤백<br>- 일관성 위반으로 인한 롤백
SQLFeatureNotSupportedException 지원하지 않는 기능 사용 - DBMS가 지원하지 않는 SQL 기능 사용
SQLTimeoutException 시간 초과 - 쿼리 실행 시간 초과<br>- 락 대기 시간 초과
SQLRecoverableException 복구 가능한 오류 - 네트워크 일시 중단<br>- 서버 일시적 부하
SQLClientInfoException 클라이언트 정보 설정 오류 - 잘못된 클라이언트 속성 설정

 

SQL 관련 주요 Exception

예외 설명 발생 예시
SQLException SQL 관련 모든 예외의 부모 클래스 구체적인 하위 예외를 먼저 catch하고 마지막에 처리
DataIntegrityViolationException 데이터 무결성 위반 (FK 제약조건 등) 데이터 정합성 체크 후 입력
DuplicateKeyException Primary Key/Unique 제약조건 위반 중복 데이터 체크 로직 추가
BadSqlGrammarException SQL 문법 오류 SQL 구문 검증 필요
QueryTimeoutException 쿼리 실행 시간 초과 쿼리 최적화 또는 타임아웃 시간 조정
ConnectException DB 연결 실패 DB 서버 상태 및 네트워크 확인
TransactionTimeoutException 트랜잭션 시간 초과 트랜잭션 범위 조정 또는 타임아웃 설정 변경
TypeMismatchException 데이터 타입 불일치 데이터 타입 매핑 확인
CannotAcquireLockException DB 락 획득 실패 트랜잭션 격리 수준 조정 또는 데드락 확인
CommunicationsException DB 통신 중 오류 발생 네트워크 연결 상태 확인

 

JDBCTemplate 관련 Exception

예외 설명 발생 예시
DataAccessException 데이터 액세스 관련 최상위 예외 모든 데이터 접근 예외의 부모
BadSqlGrammarException SQL 문법 오류 잘못된 컬럼명, 테이블명 사용
DataIntegrityViolationException 데이터 무결성 위반 FK 제약조건 위반, UNIQUE 제약조건 위반
EmptyResultDataAccessException 결과가 없을 때 queryForObject()로 단일 결과 조회 시 결과 없음
IncorrectResultSizeDataAccessException 결과 개수 불일치 단일 결과 예상했으나 복수 결과 반환
DataAccessResourceFailureException DB 리소스 접근 실패 DB 서버 다운, 네트워크 문제
CannotAcquireLockException Lock 획득 실패 데드락, Lock 타임아웃
QueryTimeoutException 쿼리 실행 시간 초과 느린 쿼리, 서버 부하
InvalidDataAccessResourceUsageException 리소스 사용 방법 잘못됨 잘못된 DB 설정, JDBC URL 오류
UncategorizedSQLException 분류되지 않은 SQL 예외 예상치 못한 DB 오류