여러 원인이 있을 수 있다.
일단 나의 경우 다른 테이블은 정상적으로 생성되는데 Meeting 테이블이 생성되지 않는 문제였다. 오류는 command 실행 오류이고 쿼리에 문제가 있는 것이었다. 스택오버플로우를 돌아다니다가 한 답변에서 힌트를 얻을 수 있었다.
postgreSQL의 예약어를 사용하여 문제가 발생했다는 답변이다.
보자마자 내 Meeting 테이블에 limit이라는 필드가 떠올랐고 MySQL에 Reserved keyword를 확인했다. (컨트롤 + F로 검색하면 편함)
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
물론 limit은 익히 알고 있는 명령어이다. 그리고 owner라는 필드명도 중복됐다. OWNER는 사용자 생성 등에 쓰이는 명령어이다.
다음부터는 예약어를 필드명으로 사용하지 않도록 조심해야 할듯하다.
이를 해결하는 다른 방법도 있는데,
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
위 옵션을 properties에 추가하는 것이다. 그럼 쿼리문을 틸드(`)로 자동으로 감싸주어서 쿼리문이 문제 없이 잘 실행된다.
그러나 저 옵션이 다른 properties에서 누락된다면 문제가 발생할 수 있으니 주의해야 한다.
'Spring' 카테고리의 다른 글
Spring Security Form Login 사용과 동시성 세션 제어 (0) | 2022.07.17 |
---|---|
Spring Boot에서 AWS S3 PresignedURL 발급받기 (1) | 2022.06.25 |
MockMvc 테스트 시 한글 깨짐 (0) | 2022.05.21 |
웹 스코프 (0) | 2022.04.30 |
빈 스코프 (0) | 2022.04.29 |