[공부정리] 'Syntax error in SQL statement [*]'

jeyong·2024년 3월 30일
0

공부 / 생각 정리  

목록 보기
64/120
post-custom-banner

이번 게시글에서는 location_tracking_module 프로젝트를 진행 중에 만난 Syntax error in SQL statement [*] 오류에 대해 다루고자 한다.

1. 발생한 오류

1-1. 오류 내용

아래는 location_tracking_module 프로젝트를 진행중에 발생한 오류이다.

Syntax error in SQL statement "select ak1_0.api_key_id,ak1_0.banned_at,ak1_0.created_at,ak1_0.deleted_at,ak1_0.grade_id,ak1_0.member_id,ak1_0.modified_at,ak1_0.[*]value from api_key ak1_0 left join member m1_0 on m1_0.member_id=ak1_0.member_id where (ak1_0.deleted_at is NULL) and m1_0.member_id=?"; expected "identifier";

'ak1_0.[*]value'는 SQL 구문에서 유효하지 않은 표현이라고 한다.

1-2. 오류 원인

문제의 원인은 데이터베이스의 예약어를 컬럼명으로 사용하여 발생한 것이다.
아래 링크에서 다양한 데이터베이스의 예약어를 확인할 수 있다.

여기서 문제가 된 VALUE가 예약어로 설정되어 있는 것을 볼 수 있다.

2. 해결 방법

해결 방법에는 대표적으로 두 가지 접근 방법이 있다.

  • 역따옴표(`), 이중 따옴표("), 또는 대괄호([]) 등을 사용하여 예약어 설정을 무시한다.
@Column(name = "`value`", unique = true, nullable = false)
    private String value;
  • 문제가 되는 column명을 변경한다.

이번 프로젝트에서는 적절한 대체 컬럼명이 떠오르지 않아, 전자의 방식으로 문제를 해결하였다. 하지만 후자의 방식이 더 적절하다고 생각한다.

profile
노를 젓다 보면 언젠가는 물이 들어오겠지.
post-custom-banner

0개의 댓글