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