좋아요 싫어요 기능을 구현 하던중 예상치 못한 JPA SQL오류에 시달렸다.

DB구조는 위 사진과 같았고, 가장 처음 마주친 오류는
you have an error in your sql syntax;
check the manual that corresponds to your mariadb server version
for the right syntax to use near {SQL 쿼리}
위와 같은 오류였다.
쿼리문이 오류라는 말인데... 분명 JPA관련 Entity나 Repository는 문제가 없었다.
이것저것 찾아보다 보니 커뮤니티 에서 정답을 찾을수 있었다.
바로 Like 테이블이 문제였다.
@Table(name="like")
테이름 이름이 like로 JPA가 쿼리를 만들고 실행하는 과정에서 like를 이름으로 인식하지 않고 SQL의 Like 문으로 인식하면서 오류가 생겼던 것이다.
따라서 테이블 이름을 수정 해줌으로써 해결이 가능했다.
like -> F_like
두번째 오류도 곧바로 찾아왔다.
Error: 1146-42S02: Table doesn't exist
바꿔준 테이블을 찾지 못하는 기이한 현상이 일어났다.
그리고 dislike 테이블에서도 비슷하게 컬럼 tableType 을 찾지 못하는 오류가 계속 발생했다.
DB 커넥션이 문제인가 싶어 다양하게 연결해보기도 하고 DBeaver를 통해 서버 DB와 컬럼이름이 다른지 데이터베이스 이름이 다른지 여러번 교차 확인 하는 등 다양한 시도를 했지만 해결 할 수 없었다.
그런후 검색을 통해 한 커뮤니티에서 정답을 찾을수 있었다.
최근 Local DB에서 리눅스 서버 DB로 프로젝트 DB를 변경하면서 별다른 생각이 없었는데 이곳에서 문제가 터진것 이였다.
MariadDB에 보면, 테이블명에 대소문자를 가리거나 무시하는 옵션이 있고,
윈도우 운영체제에서는 대소문자 무시가 기본이고, 리눅스에서는 대소문자 구분이 기본이였던 것이다.
서버 DB가 리눅스 서버다 보니 이런일이 발생했던 것이다.
문제가 발생했던
tableType 은 table_type으로
F_like 테이블명은 f_like로 변경하니 정상 작동 하였다.
'Spring & SpringBoot' 카테고리의 다른 글
| dsl 에 subquery 사용 경험 (0) | 2023.06.17 |
|---|---|
| HashTag 검색 SQL 구현해보기 (0) | 2023.01.27 |
| Spring security 시작하기 (0) | 2023.01.20 |
| MockMVC (0) | 2023.01.13 |
| SpringBoot JPA 사용하기 (0) | 2022.12.30 |