프로젝트

TIL-221029 - expected identifier SQL statement 해결법

혹등고래1호기 2022. 10. 29. 23:22

어제 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를 적을 시간을 제안을 해서 다 같이 빼먹는 일 없이 진행을 할 수 있도록 하자