언젠가는 상위 버전으로 업그레이드할 수 있으므로 향후 예약어도 살펴보는 것이 좋습니다. 이러한 단어는 상위 버전의 MySQL을 다루는 설명서에서 찾을 수 있습니다.
(MySQL 공식 문서 9.3 Keywords and Reserved Words 중)(DeppL 번역)
일반적으로 group 이라는 이름은 대표적인 예약어 중 하나이다. 때문에 JPA를 배울때도 예제 프로젝트에서 @Table(name = "groups") 라는 애노테이션은 항상 따라다녔다.
이번 프로젝트에도 Group 이라는 엔티티가 포함되어 있어 @Table(name = "groups") 애노테이션을 통해서 테이블 이름에 예약어를 사용하지 않도록 하였고, H2 내장 DB에서도 잘 작동되는 것을 확인하였다.
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 'groups (
group_id bigint not null auto_increment,
category varc' at line 1
그러나 MySQL 연동시에 지속적으로 오류가 발생하면서 groups 테이블을 만드는데 지속적으로 오류가 발생함을 확인하였다. 구글링을 통해 'mysql 예약어' 라는 검색어로 확인해도 최상단에 나열된 사이트들에서는 groups라는 예약어는 찾아볼 수 없었다.
그래서 MySQL 공식 문서에서 직접 예약어 목록을 확인해보니...
- GROUP (R)
- GROUPING (R); added in 8.0.1 (reserved)
- GROUPS (R); added in 8.0.2 (reserved)
- GROUP_REPLICATION
상기한대로 8.0.2 버전부터 groups 라는 예약어가 새롭게 추가된 것을 확인할 수 있었다.
이에 따라 Group 엔티티의 @Table(name = "groups") 대신 @Table(name = "study_group")으로 매핑할 테이블 이름을 변경해주니 오류도 발생하지 않고 잘 작동하는 것을 확인하였다.
'Database' 카테고리의 다른 글
[MySQL] InnoDB 스토리지 엔진 아키텍처 (0) | 2024.06.09 |
---|---|
[MySQL] MySQL 엔진 아키텍처 (0) | 2024.06.09 |
[MySQL] 옵티마이저의 데이터 처리 방식 (2) | 2024.05.15 |
정규화란 무엇인가 (0) | 2023.03.22 |
함수 종속 (0) | 2023.03.19 |