본문 바로가기
IT 이야기

MYSql Server8.0.17~19 'member' 예약어 이슈

by Dblog 2021. 7. 7.
728x90

최근 JPA로 테스트 DB를 만들다가 재미있는 상황이 있었습니다.

이슈 내용은 테이블을 member로 만들려 하면 발생하는 이슈였습니다.

 

JPA 기준이면 class 이름을 Member, SQL기준이면 create table member {..}에 해당하는 DDL 작성을 시도할 때 아래와 같은 에러를 출력하게 됩니다.

Caused by: java.sql.SQLSyntaxErrorException: 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 'member' at line 1
java.sql.SQLSyntaxErrorException: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 'member'

 

에러 내용을 상세히 읽어봤으면 바로 찾았겠지만....

그동안 아무 에러 없이 사용했던 코드였다는 것 때문에 코드를 대충 읽었기 때문에 찾는데 생각보다 오래 걸렸습니다. 

 

 

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

 

Reference에 예약어 목록을 보면 뭔가 특이한 게 하나 보입니다.

https://dev.mysql.com/doc/refman/8.0/en/keywords.html

MEMBER라는 예약어가 8.0.17 버전에서 추가되었다가 8.0.19 버전에서 제거 되었다는 내용입니다.

그런데.. 이번에 테스트하는 내 mysql 버전은 8.0.18..?

그럼 제 버전에는 member가 예약어로 잡혀있기 때문에 Member로 테이블을 만들 수 없게 됩니다.

 

결국 앞선 에러는 우리가 order, from, select로 테이블 생성을 시도하면 발생하는 에러와 같은 에러가 나타나는 것입니다.

이 에러를 해결하는 방법은 크게 두 가지가 있습니다.

  1. 테이블 이름을 바꾼다. 
  2. mysql 버전을 바꾼다

저는 2번을 선택해서 8.0.22 버전을 사용하고 있습니다.

물론. 에러는 더 이상 나타나지 않습니다.

 


 

 

 

※에러 메시지를 잘 읽자.

728x90

'IT 이야기' 카테고리의 다른 글

[네트워크] DNS (Domain Name System)  (0) 2021.08.05
[OPTEE-64bit] Optee_os, Optee_client, Optee_example  (0) 2021.07.16
CPU scheduling, 노예의 탄생  (0) 2021.07.06
TPM(Trusted Platform Module)  (0) 2021.06.25
RPC, IPC 그리고 gRPC  (0) 2021.06.14

댓글