-
Sequelize Database Error (Unknown column 'stagename' in 'field list')error handling/debugging 2020. 7. 13. 03:08
처음에 짠 스키마와 클라이언트에서 서버에, 그리고 서버에서 DB에 보내줘야하는 내용이 코드를 짜다보니 계속 엇갈려버렸다.
백엔드 작성 중의 실수!
스키마를 구성할 때는 고유한 userid를 받아와서 DB에서 비교할 수 있도록 구성했는데
클라이언트에서 보내줄 수 있는 내용은 username밖에 없어서
서버에서 username으로 DB에서 찾으려 하다보니 (당연히) 진행이 되지않았다.
그래서 결국 DB table 의 column 값을 userid에서 username으로 바꿔주었더니 다음과 같은 오류가 발생했다.UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Unknown column 'username' in 'field list'
오류의 원인은 model 파일의 column 값을 임의로 바꿔준다고 해도 이미 migration된 파일에 column이 변경되지 않았기 때문에 이런 오류가 발생하는 것이었다.
해결방법은 2가지
1. 다시 migration을 한다.
2. mysql터미널에서 해당 테이블을 drop하고 mysql 문법에 따라 테이블을 새로 추가한다.
+)
이 방법을 통해서 기능이 작동되게는 만들었는데 이런 식으로 해결을 했을 경우 보안문제가 발생하는 것을 알 수 있었다.
username을 변경했을 경우 그 변경한 username의 기존 정보를 확인할 수 있다는 것이 문제..
결국 이것이 근본적인 해결이 될 수는 없다는 것을 깨달았다.
고유 id를 부여해주고 그걸로 DB를 탐색하는 방법을 더 알아봐야할 것이다.
'error handling > debugging' 카테고리의 다른 글
서버 포트 중복 오류 / Error: listen EADDRINUSE: address already in use ::: 5000 (0) 2020.07.03 [github] remote repository 공유가 안될 때 (remote: Repository not found) (5) 2020.07.01