티스토리 뷰

ERD 최종_진짜최종_진짜진짜최종.jpg 같은 느낌....

이렇게 간단한 ERD를 5번이나 수정하고 있습니다..! 

오늘은 도대체 어떤 문제 때문에 ERD를 또 수정했는지 기록해보도록 할게요.

 

 


 

 

1️⃣ 문제

스프링부트에 MySQL을 연결해 회원가입 기능을 테스트 하던 도중 다음과 같은 에러가 발생했습니다.

 

2️⃣ 오류메세지

java.sql.SQLSyntaxErrorException: Unknown column 'ue1_0.user_id' in 'where clause'

DB에 컬럼이 없어서 SQL 명령어 실행이 실패 했다는 내용입니다.

 

3️⃣ 원인

아무리 DB를 보고 Entity를 봐도 분명 해당 컬럼들이 다 작성되어 있는데 도대체 왜 컬럼이 없다는 거지? 하고 한참을 헤매었습니다.

원인은 간단했는데요!

바로 Linux나 Unix 환경의 DB는 대소문자에 영향을 받지만, Windows는 영향을 받지 않는다고 합니다.

https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html

 

그리하여 jpa가 호환성을 위해서 userId처럼 카멜표기법으로 작성했던 모든 컬럼이 user_id로 자동 변경하도록 되어있기 때문에 생긴 문제입니다. 

 

4️⃣ 해결

 

  • 카멜 표기법으로 작성했었던 모든 컬럼들을 다 언더바(_) 표기로 수정해주었습니다.
  • 노란색 password2 부분은 회원가입 로직을 작성하다보니 굳이 개인적인 정보인 '핸드폰 번호' 컬럼이 필요할까? 인증을 위해 핸드폰을 사용하는 게 아니라면 차라리 없는 게 낫지 않을까? 싶어서 삭제하고, '비밀번호 확인' 컬럼을 추가해준 것 입니다.
     

 

STS에서도 해당 컬럼의 name을 DB와 똑같은 이름으로 수정해주었습니다.

그래야 DB에서 name을 통해 해당 컬럼의 데이터를 찾아올 수 있기 때문입니다.

 


 

 

이후 문제 없이 데이터를 가져오는 것을 테스트 해볼 수 있었습니다.

MyBatis를 사용했을 때는 없었던 이슈라 굉장히 당황했네요..!

이렇게 프로젝트 초기에 DB설계를 잘 못해놓으면 프로젝트 진행과정에서도 계속 수정할 거리가 생기고 테스트도 안되고 원활히 진행되지 않는다는 것을 한번 더 깨닫습니다..

팀프로젝트 때 DB설계에서 부족함을 느껴 이번 개인 프로젝트에서는 잘 해보고 싶었는데 아직도 부족함이 많은 것 같아요.

그래서! 조금이라도 도움이 되고자 SQLD 1회차를 신청했답니다..! 

확실히 사람은 강제성보다는 자기 자신의 부족함과 필요성을 느낄 때 추진력을 얻게 되는 것 같아요.

DB마스터 가보자고 🔥

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함