Gyuseok
Dreaming_developer
Gyuseok
  • 분류 전체보기 (39)
    • Note (0)
    • TIL (8)
    • 일상 (1)
    • git & git hub (1)
    • Algorithm (14)
    • JAVA (5)
    • Spring & SpringBoot (10)
    • 기업연계 프로젝트 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리자
  • 티스토리
  • 글작성

공지사항

인기 글

태그

  • lombok
  • 국비지원교육
  • pattern
  • 내일배움카드
  • 패스트캠퍼스
  • java
  • MegabyteSchool
  • 메가바이트스쿨
  • 개발자취업부트캠프
  • Builder

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Gyuseok

Dreaming_developer

Spring & SpringBoot

JPA SQL 오류 경험

2023. 2. 5. 01:18

좋아요 싫어요 기능을 구현 하던중 예상치 못한 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
    'Spring & SpringBoot' 카테고리의 다른 글
    • dsl 에 subquery 사용 경험
    • HashTag 검색 SQL 구현해보기
    • Spring security 시작하기
    • MockMVC
    Gyuseok
    Gyuseok

    티스토리툴바