본문 바로가기
발견

Spring Security 회원가입 POST 요청 시 500 에러 발생

by Dev_Green 2022. 8. 21.

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'로 바꿔줌으로써 문제를 해결할 수 있었다.