혼자 적어보는 노트

[MySQL] sequelize mysql column 이름, 속성 변경 및 생성 본문

기타

[MySQL] sequelize mysql column 이름, 속성 변경 및 생성

jinist 2022. 3. 18. 03:29

회원가입 구현을 하는 도중에 데이터를 서버로 넘기는데

자꾸 아래와 같은 에러가 발생했다.

 

parent: Error: Data too long for column 'password' at row 1

 

처음에 password column의 속성으로 DataTypes.STRING(30) 로 설정해서

문자열 길이가 30으로 설정이 되어있었다.

 

그래서 단순하게 100으로 변경을 하고 저장을 했는데 자꾸 저 에러가 떴다.

200으로 변경을 해보고 암호화된 password를 콘솔로 찍어봤는데 길이가 100이 넘지 않았다.

 

연동이 안되는 것 같아서 mysql 워크벤치로 확인을해보니 역시나 이전 설정 그대로인것!

변경하는 것을 알아보니 sequelize의 Table 속성은 변경할 수 없고 삭제하고 다시 생성을 해야 한다고 한다.

 


 

column 삭제 후 생성 하는 방법

 

1. 마이그레이션 파일 추가

npx sequelize migration:create --name "마이그레이션 파일명"

파일 명은 마음대로 지정을 하면 되고 위의 명령어를 마치면

migrations폴더 안에 파일이 생성된다

 

2. 마이그레이션 파일에 수정하려는 column의 내용 입력

 

일단 기본값으로 세팅이 되어있는데 up 안에 변경하려는 내용을 입력해주면된다.

removeColumn으로 지우고

addColumn으로 다시 생성을 해주었다.

 

❗❗ 조심해야할 점!

* 인자가 Sequelize로 되어있기 때문에 type: DataType이 아니라 type : Sequelize이다.

* models에서의 이름 말고 MySQL안의 table의 이름을 적어주어야 한다.

(따로 테이블 이름 설정을 하지 않을 경우 복수형으로 저장되기 때문)

 

 

3. 저장 후 아래의 코드를 실행한다.

npx sequelize-cli db:migrate

 

삭제/생성 완료!

 

* 워크벤치를 켜고 있다면 탭을 닫고 다시 실행해야 변경된 것이 적용된다.

 

+)

만약 또 변경사항이 생긴다면 같은 migration 파일에서 수정하고 

npx sequelize-cli db:migrate를 하면 적용이 될까?

 

안된다. 🤣

 


 

migration 되돌리기

npx sequelize-cli db:migrate:undo:all

 

 

 

 

참고:

https://worker-k.tistory.com/entry/Sequelize-mysql-column-%EC%9D%B4%EB%A6%84-%EB%B3%80%EA%B2%BD%ED%95%98%EA%B8%B0

Comments