💥 Java + MSSQL API 호출 시 자주 발생하는 SQL 오류 정리

2025. 7. 8. 09:58Java Study Note

반응형

Java에서 JDBC 혹은 Spring JPA를 통해 SQL Server와 통신할 때 다음과 같은 SQL 오류 코드SQLSTATE를 자주 접하게 됩니다. 오류가 발생하는 원인과 함께 해결 팁도 정리해봤어요!

 

🧩 대표 오류 코드 & SQLSTATE 목록

SQL ErrorSQLSTATE원인 설명
515 23000 NOT NULL 제약 조건 위반 – NULL을 넣을 수 없는 컬럼에 값이 빠짐
2627 23000 UNIQUE 또는 PRIMARY KEY 제약 조건 위반 – 중복된 값 삽입
547 23000 FOREIGN KEY 위반 – 참조 무결성 오류, 부모 테이블에 없는 값 참조
245 22018 데이터 형식 오류 – 예: 문자열을 숫자로 강제 변환하려 할 때
208 42S02 존재하지 않는 테이블 혹은 뷰 참조
207 42S22 잘못된 컬럼명 – SELECT/WHERE절 등에 오타나 없는 컬럼 사용
8114 22005 데이터 형식 변환 실패 – 예: varchar → int 실패
18456 28000 로그인 실패 – 사용자 인증 오류(ID 또는 비밀번호 문제 등)
233 08001 연결 실패 – 서버가 연결을 끊거나 응답 불가한 상황
121 HYT00 연결 타임아웃 – 네트워크 또는 서버 지연

 

 

🧪 예외 로그 예시

SQL Error: 515, SQLState: 23000
Message: Cannot insert the value NULL into column 'name'; column does not allow nulls. INSERT fails.

 

👉 문제 원인: 'name' 컬럼은 NOT NULL인데 insert할 때 값을 넣지 않음 ✅ 해결 방법: 해당 컬럼에 기본값 지정하거나, 값을 명시적으로 설정

 

 

 

🛠️ Java 예외 처리 팁

JDBC나 Spring Data를 사용하는 경우, SQLException에서 코드와 상태값을 추적할 수 있어요:

try {
    // DB 호출
} catch (SQLException e) {
    log.error("SQL 오류 코드: " + e.getErrorCode());
    log.error("SQLSTATE: " + e.getSQLState());
    log.error("메시지: " + e.getMessage());
}
 
🔎 로그 출력 후 오류 코드를 기반으로 빠르게 원인을 추적하면 생산성이 확 올라갑니다!
 

📌 정리 한 줄 요약

  • 23000 SQLSTATE는 무결성 제약조건 위반 계열
  • SQL Error 코드가 500~2000번대면 입력값 누락, 2000~3000번대면 제약 위반, 8000~는 시스템/연결 문제 가능성 높음

 

✍️ 마무리

SQL 오류는 메시지만 봐선 처음엔 당황스럽지만, 패턴이 익숙해지면 빠르게 디버깅할 수 있습니다. 특히 Java 개발자가 SQLSTATE를 함께 체크하면, 어떤 성격의 오류인지 분류하기 훨씬 수월하죠.

반응형

'Java Study Note' 카테고리의 다른 글

열거형(enum)  (0) 2023.05.09
Spring 시작 Day2  (0) 2023.02.05
Spring 시작 Day1  (0) 2023.02.04
2진법, 10진법, 16진법, bit  (0) 2023.02.01
연산자와 피연산자  (0) 2023.01.24