MySQL | NoSQL/MySQL | NoSQL

[ MySQL ] 쿼리문 에러: You have an error in your SQL syntax; ...

shiro21 2023. 7. 12. 18:29
반응형

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at Line 1

위 에러 내용은 기본적인 문법 오류입니다.

그런데 이번에 위 오류가 특이한 상황에 떠서 적은 내용입니다.

 

sql

const _sql = `UPDATE messages SET read='1', updatedAt='${new Date()}' WHERE _id='${_id}';`;

위처럼 ''가 잘못되거나 오타가 있는 내용이 아니었습니다.

그런데... 칼럼 중에 read라는 칼럼을 사용하고 있었는데, 생성할 때, 불러올 때는 전혀 문제가 없었는데 UPDATE를 사용하려고 하니까 계속해서 위 에러 구문이 나오는 상황이었습니다...!

read라는 예약어가 있었던 것 같습니다.

뭔가 검색해봐도 없길래 문제없는 줄 알았더니 예약어 목록을 찾아보니 READ라는 이름이 있었습니다..ㅠ

그래서 read의 이름을 바꿔주고 에러를 해결했습니다. 역시 있을법한 이름은 사용하지 않는 것이 좋을 듯합니다.

 

 

예약어 목록

ADD ALL ALTER
ANALYZE AND AS
ASC ASENSITIVE BEFORE
BETWEEN BIGINT BINARY
BLOB BOTH BY
CALL CASCADE CASE
CHANGE CHAR CHARACTER
CHECK COLLATE COLUMN
CONDITION CONSTRAINT CONTINUE
CONVERT CREATE CROSS
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURRENT_USER CURSOR DATABASE
DATABASES DAY_HOUR DAY_MICROSECOND
DAY_MINUTE DAY_SECOND DEC
DECIMAL DECLARE DEFAULT
DELAYED DELETE DESC
DESCRIBE DETERMINISTIC DISTINCT
DISTINCTROW DIV DOUBLE
DROP DUAL EACH
ELSE ELSEIF ENCLOSED
ESCAPED EXISTS EXIT
EXPLAIN FALSE FETCH
FLOAT FLOAT4 FLOAT8
FOR FORCE FOREIGN
FROM FULLTEXT GRANT
GROUP HAVING HIGH_PRIORITY
HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND
IF IGNORE IN
INDEX INFILE INNER
INOUT INSENSITIVE INSERT
INT INT1 INT2
INT3 INT4 INT8
INTEGER INTERVAL INTO
IS ITERATE JOIN
KEY KEYS KILL
LEADING LEAVE LEFT
LIKE LIMIT LINES
LOAD LOCALTIME LOCALTIMESTAMP
LOCK LONG LONGBLOB
LONGTEXT LOOP LOW_PRIORITY
MATCH MEDIUMBLOB MEDIUMINT
MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND
MINUTE_SECOND MOD MODIFIES
NATURAL NOT NO_WRITE_TO_BINLOG
NULL NUMERIC ON
OPTIMIZE OPTION OPTIONALLY
OR ORDER OUT
OUTER OUTFILE PRECISION
PRIMARY PROCEDURE PURGE
READ READS REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SONAME SPATIAL SPECIFIC
SQL SQLEXCEPTION SQLSTATE
SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS
SQL_SMALL_RESULT SSL STARTING
STRAIGHT_JOIN TABLE TERMINATED
THEN TINYBLOB TINYINT
TINYTEXT TO TRAILING
TRIGGER TRUE UNDO
UNION UNIQUE UNLOCK
UNSIGNED UPDATE USAGE
USE USING UTC_DATE
UTC_TIME UTC_TIMESTAMP VALUES
VARBINARY VARCHAR VARCHARACTER
VARYING WHEN WHERE
WHILE WITH WRITE
XOR YEAR_MONTH ZEROFILL

MySQL 예약어 바로가기

 

반응형