1. 상황
Spring Security를 활용하여 회원가입 기능을 구현하던 중
회원가입 페이지에서 각 항목들을 입력하고 '회원가입' 버튼을 눌렀더니
아래와 같은 에러 페이지(type=Internal Server Error, status=500)가 반환되었다.
설계대로라면 회원가입 요청 성공 시 로그인 페이지로 리다이렉트 되어야 한다.
2. 문제 인식
서버를 구동한 IntelliJ로 돌아와서 콘솔 로그를 확인보았더니 SQL 관련 에러를 확인할 수 있었다.
주요 부분을 발췌하면 아래 코드와 같다.
SQL Error: 42001, SQLState: 42001
Syntax error in SQL statement "select user0...생략" expected "identifier"; SQL statement:
검색 결과 42001 이라는 에러 코드는 유효하지 않은 SQL 쿼리를 보냈음을 의미한다고 한다.
문제는 'User'라는 이름의 엔터티였다. 이는 MySQL에서 reserved word로 사용되고 있다.
* 예약어(reserved word)는 컴퓨터 프로그래밍 언어에서 이미 문법적인 용도로 사용되고 있기 때문에 식별자(identifier)로 사용할 수 없는 단어들이다.
회원가입 요청을 받을 때 username, password 등을 담는 클래스를 'User' 라는 이름을 붙여 관리하고 있었는데, 이 이름이 DB에 테이블로 저장되는 과정에서 충돌을 일으킨 듯하다.
3. 해결
엔터티의 이름이 문제가 된 것이므로 이 이름을 'Users'로 바꿔줌으로써 문제를 해결할 수 있었다.
'발견' 카테고리의 다른 글
[Docker] 도커 연결 시 Host 포트와 Container 포트 (0) | 2023.06.08 |
---|---|
[오늘의 발견] 원형 자료구조에서의 인덱스 (0) | 2023.06.08 |
@Builder의 선언위치에 따른 차이 (0) | 2023.05.26 |
[Spring] Port 8080 is already in use 에러 해결 방법 (0) | 2022.08.25 |
Port Forwarding(포트 포워딩)이 안될때 - 80 to 8080 (0) | 2022.08.18 |