💥 Java + MSSQL API 호출 시 자주 발생하는 SQL 오류 정리
2025. 7. 8. 09:58ㆍJava 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 |