본문 바로가기

프로젝트

TIL-221029 - expected identifier SQL statement 해결법

어제 AWS S3 스토리지에서 이미지를 불러오는 작업을 완료했고 BackdoorAPI를 통해 데이터베이스에서 상품에 대한 정보를 저장 하고 프로그램을 실행하려는 순간 이런 에러가 발생했다.

 

(local에서 h2database를 사용하는 상황) product_table이라는 table을 만드는데 실패했고 SQL문법이 틀렸다 라는 에러가 발생을 했다. (product_table이라고 한 이유는 entity이름 떄문인줄 알고 바꿨던 상태였다).

 

 

 

 

그리고 이게 product의 field값이다. 아마 SQL을 많이 써본 사람은 조금 자세히 보면 바로 알아 차릴 수 있었겠지만 이 에러를 처리한다고 

1시간 넘게 써버렸다. 

 

빠르게 해결법 부터 말을 하면 

 

 

product의 field(속성)값이 like의 앞에만 [*]표시가 있다. 이건 바로 SQL문의 예약어인 like와 이름이 같기 때문에 테이블의 column값으로 지정을 할 수 가 없어서 발생한 에러이다. 

 

Entity로 지정을 한 클래스의 명이나 속성값은 SQL문의 예약어와 겹치면 안된다. 

 

SQL예약어 목록

 

A

ABSOLUTE ANY
ADD ARE
ADMINDB AS
ALL ASC
영숫자 - TEXT 참조 ASSERTION
ALTER AUTHORIZATION
ALTER TABLE AUTOINCREMENT - COUNTER 참조
And Avg
AS

 

 

B~C

BEGIN COLLATION
Between COLUMN
BINARY COMMIT
BIT COMP, COMPRESSION
BIT_LENGTH CONNECT
BOOLEAN - BIT 참조 CONNECTION
BOTH CONSTRAINT, CONSTRAINTS
BY CONTAINER
BYTE CONTAINS
CASCADE CONVERT
CATALOG Count
CHAR, CHARACTER - TEXT 참조 COUNTER
CHAR_LENGTH CREATE
CHARACTER_LENGTH CURRENCY
CHECK CURRENT_DATE
CLOSE CURRENT_TIME
CLUSTERED CURRENT_TIMESTAMP
COALESCE CURRENT_USER
COLLATE CURSOR

 

 

D

DATABASE DISALLOW
DATE - DATETIME 참조 DISCONNECT
DATETIME DISTINCT
DAY DISTINCTROW
DEC, DECIMAL DOMAIN
DECLARE DOUBLE
DELETE DROP
DESC

 

E-H

Eqv FOREIGN
EXCLUSIVECONNECT FROM
EXEC, EXECUTE FROM 절
EXISTS GENERAL - LONGBINARY 참조
EXTRACT GRANT
FALSE GROUP
FETCH GUID
FIRST HAVING
FLOAT, FLOAT8 - DOUBLE 참조 HOUR
FLOAT4 - SINGLE 참조

 

I

IDENTITY INPUT
IEEEDOUBLE - DOUBLE 참조 INSENSITIVE
IEEESINGLE - SINGLE 참조 INSERT
IGNORE INSERT INTO
IMAGE INT, INTEGER, INTEGER4 - LONG 참조
Imp INTEGER1 - BYTE 참조
In INTEGER2 - SHORT 참조
IN INTERVAL
INDEX INTO
INDEXCREATEDB Is
INNER ISOLATION

 

J-M

JOIN LONGTEXT
KEY LOWER
LANGUAGE MATCH
LAST Max
LEFT MEMO — LONGTEXT 참조
Level* Min
Like MINUTE
LOGICAL, LOGICAL1 - BIT 참조 Mod
LONG MONEY - CURRENCY 참조
LONGBINARY MONTH
LONGCHAR

 

N-P

NATIONAL Outer*
NCHAR OUTPUT
NONCLUSTERED OWNERACCESS
Not PAD
NTEXT PARAMETERS
NULL PARTIAL
NUMBER - DOUBLE 참조 PASSWORD
NUMERIC - DECIMAL 참조 PERCENT
NVARCHAR PIVOT
OCTET_LENGTH POSITION
OLEOBJECT - LONGBINARY 참조 PRECISION
ON PREPARE
OPEN PRIMARY
OPTION PRIVILEGES
또는 PROC, PROCEDURE
ORDER PUBLIC

 

Q-S

REAL - SINGLE 참조 SMALLDATETIME
REFERENCES SMALLINT - SHORT 참조
RESTRICT SMALLMONEY
REVOKE SOME
RIGHT SPACE
ROLLBACK SQL
SCHEMA SQLCODE, SQLERROR, SQLSTATE
SECOND StDev
SELECT StDevP
SELECTSCHEMA STRING - TEXT 참조
SELECTSECURITY SUBSTRING
SET Sum
SHORT SYSNAME
SINGLE SYSTEM_USER
SIZE

 

T-Z

TABLE UPDATEOWNER
TableID* UPDATESECURITY
TEMPORARY UPPER
TEXT USAGE
TIME - DATETIME 참조 USER
TIMESTAMP USING
TIMEZONE_HOUR VALUE
TIMEZONE_MINUTE VALUES
TINYINT Var
TO VARBINARY - BINARY 참조
TOP VARCHAR - TEXT 참조
TRAILING VARP
TRANSACTION VARYING
TRANSFORM VIEW
TRANSLATE WHEN
TRANSLATION WHENEVER
TRIM WHERE
TRUE WITH
UNION WORK
UNIQUE Xor
UNIQUEIDENTIFIER YEAR
UNKNOWN YESNO - BIT 참조
UPDATE ZONE
UPDATEIDENTITY

 

 

스토리 포인트마다 할 목표를 정하고 회고 하는 식으로 진행을 했어야 하는데 역시 잘 안지켜 지는 것 같다. 내일은 다 같이 뽀모가 끝난 후

다른 동료들에게도 dailySprint를 적을 시간을 제안을 해서 다 같이 빼먹는 일 없이 진행을 할 수 있도록 하자