[error/JPA] SQL에러 Unknown Column in field list

dani·2025년 6월 19일

error

목록 보기
5/7

작성일 2024. 2. 28.

◾에러 파악하기

✔️Background

기존에는 Jdbc를 이용하여 API개발을 진행하다가, Spring Data JPA를 사용하기 위한 코드로 리팩토링하였다.

리팩토링은 엔터티 한 개에 @Entity를 붙여 테이블과 매핑을 하는 것인데,

컴파일 상 오류는 없었고 서버는 정상적으로 동작했다.

⚠️Error

에러는 아래와 같다. Unknown column '테이블명_필드명' in field list 라는 오류이다.


🫠상황

문제는 db상의 테이블과 객체의 매핑에 있었다. LocalDate warehousingDate 필드 때문이었다.

POST API나 PUT API를 할 시 위와 같은 에러가 터지며 POSTMAN에서는 500에러를보냈다.

db상에는 warehousingDate라는 이름의 테이블이 있으나 jpa가 찾고 있는 warehousing_date라는 테이블은 없는 것이다. LocalDate warehousingDate 필드는 db상에서 스네이크케이스(대문자를 밑줄로 구분)를 사용하기 때문에 이 필드에 대한 테이블로 warehousing_date 을 찾는 것이다.

즉 db상에 컬럼이 없다고 나타나는 에러이다.



◾에러 해결하기

문제는 위와 같이 db상에 컬럼이 없는 경우도 있고, 문자열 데이터에 따옴표가 없는 경우도 있다고 한다. 정리하면 위의 에러의 대표적인 원인 2가지는 아래와 같다.

✔️에러 원인

ERROR: Unknown column in field list

  1. 데이터베이스에 컬럼이 존재하지 않는 경우

  2. 문자열 데이터에 따옴표가 없는 경우


✔️에러 해결

🔍 데이터베이스 컬럼명 변경하기

원인의 첫 번째 경우에 해당하였기 때문에 아래와 같이 데이터베이스의 컬럼명을 변경하였다.

warehousingDate → warehousing_date


그러면 현재 찾고 있는 컬럼이 생긴 것이므로 에러가 발생하지 않을 것이다. 나는 기존의 컬럼이 있었기 때문에 이름을 변경하였고, 기존 컬럼이 없다면 새로 'warehousing_date'라는 이름의 컬럼을 생성하여도 된다.


어찌되었든 데이터베이스에 지금 콘솔에서 찾고 있는 unknown column(warehousing_date)이 존재하기만 하면 된다!

물론 jpa기본 설정을 바꿔주어 이 문제를 해결하는 방법도 있는 듯 하다. 그러나 데이터베이스는 보통 snake_case, 자바는 camelCase를 많이 이용하기 때문에 관례를 따라서 데이터베이스 컬럼명을 스네이크 케이스로 변경해주기로 하였다.

ALTER TABLE fruit
CHANGE COLUMN warehousingDate warehousing_date DATE;

위와 같은 쿼리를 작성하였다. 컬럼이 잘 바뀌었는지 확인해보자.

새로고침해보니 컬럼명이 잘 바뀌어 warehousing_date로 변경되어 있다. POSTMAN에서 API 요청도 잘 보내진다.

profile
개발세포 이야기

0개의 댓글