[Node.js] Sequelize와 MySQL 연결하기

2020. 2. 24. 01:21프로그래밍-Web/Node.js

무려 일곱시간을 헤맸다 ㅠㅠ

요게 자잘한 이슈들이 많아서 쉽게 접속이 되질 않는다.

 

Sequelize는 Node.js에서 제공하는 ORM이다.

ORMObject-Relation Mapping의 약자로, 딱 봐도 객체와 관련이 있어 보인다.

직역하면 '객체와의 관계 지도'정도 될 터인데, 사실 이놈을 사용함으로서 얻어지는 장점이 확 와닿진 않는다.

 

그러니까 도식화시켜보면

 

원래 이렇게 DB 접근을 위해서는, DB와 소통되는 언어인 쿼리를 사용해야 하지만

 

ORM이라는 친구가 있으면, 이렇게 DB와 대신 이야기해준다.

그러니까 쿼리를 잘 모르는 사람에게 매우 좋은 템일테다.

쿼리가 빠지면 코딩하는 양도 줄긴 할테고, 무엇보다 분업하기가 쉬울테니..

자바는 JPA라는 유명한 ORM 기술 표준이 있고, 툴로는 하이버네이트를 많이들 사용한다.

 

사실 ORM이 유명무실하다는 의견도 많다.

https://okky.kr/article/286812

불러오는 중입니다...

그렇지만 막상 어플들 밑단 까보면 죄다 ORM이 깔려있다고도 하고...

 

무튼 이런 얘길 하려던 것이 아니고

이놈의 MySQL과 Sequelize의 연결이 아주 주옥같았다는 얘길 하고 싶었다.

 

일단 정리!

 

1) Sequelize 패키지 설치

 

일단 여느 노드작업과 마찬가지로 pug를 프론트로 하는 패키지 먼저 만들어주고

 

반드시 '글로벌'로 MySQL2 디펜던시를 달아준다

얘를 달아야 노드가 MySQL을 인식할 수 있다

 

다음엔 MySQL을 포함한 Sequelize 패키지 생성

 

그리고 난 후, cli를 붙인 명령어를 실행해주면 Sequelize를 CLI로 쓸 수 있다.

 

 

 

2) Sequelize의 구조

 

Sequelize도 일종의 라우터 같은 형태라서

요 models 폴더 안에 있는 index.js가 핵심이다

 

얘를 열어보면 ORM구동에 필요한 여러 모듈들을 불러오는데

우리가 주목해야 할 부분 첫째는 저기 1번 Sequelize부분.

쟤는 말그대로 Sequelize모듈을 불러온다

 

그럼 걔는 뭐하는 애냐!

저기 2번 config 객체를 보면 알 수 있다

기본적으로 config 객체는 config 폴더안의 json파일을 참고한다

 

그리고 sequelize를 실행하면, config.json안에있는 config.xxx 들을 읽어온다

 

 

그럼 config 파일도 까보자

요래 되어있다.

저기 포트설정 객체에서 development 파트만 사용한다고 했으니, 우리는 development의 설정만 DB와 동일하게 바꿔주면된다.

 

 

3) MySQL설치

 

사실 요 부분이 아주 중요!

왜냐하면 개발자 웹프로그래밍 작업 피씨에 MySQL이 설치되지 않은 경우가 덜 흔하기 때문

 

원래는 위에처럼 설정하고 Sequelize db:create를 하면

"database"이름을 가지고 있는 스키마가 하나 생성된다

 

하지만 에러 꽝!

보통 저기 Access 에러는 

구글링 해보면 두 가지 이유로 생긴다

 

- 비번이 틀렸거나

- MySQL을 안켰거나

 

하지만 다 했다...

 

그래서 MySQL을 뜯어봤다.

 

버전이 5.1이다.

MySQL 버전은 무조건 5.7로 사용하는 것이 좋다

(저기 Win32는 무시해도 된다.)

 

하지만 이미 설치된 MySQL덕에 Sequelize가 포트를 잡지 못하는 현상이 발생한다.

 

그래서 

https://dev.mysql.com/downloads/windows/installer/

 

MySQL :: Download MySQL Installer

Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.19 18.6M (mysql-installer-web-community-8.0.19.0.msi) MD5: 32043776cb2239db45fddaa86dc0ad61 | Signatur

dev.mysql.com

 

어쩌겠어

MySQL 새로 설치가 답이다

여기서 조심

반드시 msi 인스톨러 버전으로 받아야, 포트를 새로 팔 수 있다.

cmd로 조작하는 버전을 받게 되면 변수 설정이 너무 힘들다

 

쟤를 받고나서 설치 쭉쭉진행(설치 과정은 중요한 부분만 설명한다)

일단 여기에서 Visual Studio 요구 사항을 제대로 설치해야 된다.

그래야 워크벤치가 돌아감

(나는 하이디를 쓰니까 노상관)

 

 

그리고 포트 설정부분에서 !!

저거 3306이 아닌 다른걸루 한다

요게 가장 중요하다.

안그러면 충돌난다.

왜냐하면 3306은 기버전 MySQL이 이미 쓰고 있기 때문이다.

 

이 과정에서 잠깐 cmd를 켜보면

 

요래 뜬다. 절대 손대지 말자.

 

 

 

4) Config.json 수정

 

간단하다

포트만 추가해주면된다.

이걸 몰라서 그 쌩난리를 쳤...

 

 

5) 결과

 

뾰로롱~

 

하이디에도 잘 들어갔다

이제 Sequelize 쓸 준비 완료!! ㅠㅠ

 

 

사실 근본적인 해결을 한 것은 아니다

어쨋든 3306은 못쓰니까...

MySQL 버전 맞추라고 하는 얘기들이 많던데, 아마 Sequelize와 호환되는 버전이 따로 있겠거니 싶다.