해당 오류 내용을 대략 번역해보면 'SQL 구문에 오류가 있다.'라는 내용이다. 이와 관련해서 여러 글들을 찾아보면 대부분 SQL 이 잘못되어 있거나 Model 명과 실제 테이블 컬럼의 명이 다르거나 SQL 쿼리 문이 잘못되어 있다는 거였다.
나도 처음에는 쿼리문이 잘못 되어있는줄 알고 찾아보았지만 쿼리문에는 문제가 없었다. 그러다 알게 된 사실인데 테이블을 생성할 때 예약어를 컬럼명이나 DB 명으로 생성하는 안 되는 거였다. 그중 난 'Order'라는 단어를 사용했는데 이것 조차 안 되는 건 줄 몰랐다.
해결 방식
1. 쿼리 문에 문제가 있는지 확인한다.
2. 예약어를 사용했는지 확인한다.
DB 예약어 링크
Oracle
https://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm
Oracle Reserved Words
30/31 G Oracle Reserved Words This appendix provides a complete list of Oracle reserved words. List of Oracle Reserved Words In addition to the reserved words in Table G-1, Oracle also uses system-generated names beginning with SYS_ for implicitly generate
docs.oracle.com
SQL Server
Reserved Keywords (Transact-SQL) - SQL Server
Reserved Keywords (Transact-SQL)
learn.microsoft.com
MySQL
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
MySQL :: MySQL 8.0 Reference Manual :: 9.3 Keywords and Reserved Words
9.3 Keywords and Reserved Words Keywords are words that have significance in SQL. Certain keywords, such as SELECT, DELETE, or BIGINT, are reserved and require special treatment for use as identifiers such as table and column names. This may also be true
dev.mysql.com
MariaDB
https://mariadb.com/kb/en/reserved-words/
Reserved Words
List of reserved words in MariaDB.
mariadb.com
예약어를 사용하고 싶은 경우
만약, 예약어로 사용하고싶은 경우 '(작은따옴표)로 묶은 다음 사용하면 된다. ex) 'Order'
하지만 개인적으로 예약어를 사용하는 건 추천하고 싶지 않다.
댓글