아래는 오류 메시지의 각 부분에 대한 자세한 설명입니다.
org.springframework.jdbc.BadSqlGrammarException:
java.sql.SQLSyntaxErrorException:
e.img
라는 컬럼을 선택하려고 하는데, 데이터베이스의 테이블(여기서는 Estate 테이블)에 해당 컬럼이 없음을 의미합니다.SELECT ... SUBSTRING_INDEX(e.img, ',', 1) AS img ...
구문에서 e.img를 참조하고 있는데, 실제로 Estate 테이블에는 'img' 컬럼이 존재하지 않는 상황입니다.The error may exist in com/kb/home/mapper/PopularEstateMapper.xml:
PopularEstateMapper.xml
에서 발생했음을 알려줍니다.The error may involve defaultParameterMap:
The error occurred while setting parameters:
SELECT
e.address,
e.tradetype,
e.roomSize,
e.floor,
e.deposit,
e.monthlyPee,
SUBSTRING_INDEX(e.img, ',', 1) AS img,
COUNT(w.wished_id) AS wishCount
FROM Wish w
JOIN Estate e ON w.wished_id = e.eno
GROUP BY
e.eno,
e.address,
e.tradetype,
e.roomSize,
e.floor,
e.deposit,
e.monthlyPee,
e.img
ORDER BY wishCount DESC
LIMIT 4
e
alias:
e
라는 별칭(alias)이 부여되어 있습니다.e.address
, e.tradetype
등으로 컬럼을 참조하는데, e.img
컬럼을 사용하고 있습니다.SUBSTRING_INDEX(e.img, ',', 1) AS img:
GROUP BY 및 ORDER BY:
e.img
가 포함되어 있습니다.원인:
해결:
이처럼, 오류 메시지 각 부분은 SQL 문법 오류, 잘못된 컬럼 참조, 그리고 MyBatis 매퍼 파일의 문제 가능성을 알려주고 있습니다. 이를 토대로 스키마와 SQL 쿼리를 점검하면 문제를 해결할 수 있습니다.