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
Reference에 예약어 목록을 보면 뭔가 특이한 게 하나 보입니다.
MEMBER라는 예약어가 8.0.17 버전에서 추가되었다가 8.0.19 버전에서 제거 되었다는 내용입니다.
그런데.. 이번에 테스트하는 내 mysql 버전은 8.0.18..?
그럼 제 버전에는 member가 예약어로 잡혀있기 때문에 Member로 테이블을 만들 수 없게 됩니다.
결국 앞선 에러는 우리가 order, from, select로 테이블 생성을 시도하면 발생하는 에러와 같은 에러가 나타나는 것입니다.
이 에러를 해결하는 방법은 크게 두 가지가 있습니다.
- 테이블 이름을 바꾼다.
- 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 |
댓글