강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

parksh626님의 프로필 이미지
parksh626

작성한 질문수

[리뉴얼] React로 NodeBird SNS 만들기

drop database 후 mysql 테이블 삭제

작성

·

506

1

백엔드 서버와 프론트 서버를 npx pm2로 실행시키고 페이지에서 회원가입 후 로그인을 실행하니 네트워크에서 200으로 성공했지만 데이터가 전달이 되지 않았습니다.

강의 중 mysql 데이터베이스 테이블 명을 대문자에서 소문자로 바꾸면 해결된다고 해서 mysql에서 drop database `데이터베이스 이름`;을 했습니다.

그리고 pm2 reload all을 하고 mysql에서 show tables로 테이블을 확인하니까 비워져 있었습니다.

mysql> show tables;

Empty set (0.00 sec)

drop database를 했을때 강사님은 테이블명이 바뀌었던데 왜 저는 삭제가 바로 됐을까요?

이 후 npx sequelize db:create를 하고 pm2 reload all을 했지만 여전히 mysql은 비워져있습니다.

그리고 mysql 워크밴치에 여전히 개발환경에서 넣어놨던 데이터가 배포환경으로 시작했는데 사라지지 않고 있습니다.

어떤 코드가 배포환경으로 시작할때 개발환경에서 저장한 데이터가 사라지고 워크밴치가 리셋이 되는 건지도 궁금합니다.

답변 1

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

use '디비명'; 먼저 하셔야 show tables;할 때 테이블이 보입니다.

개발환경이랑 배포환경은 완전 별개라서 서로 영향을 미치지 않습니다.

parksh626님의 프로필 이미지
parksh626
질문자

네 use 디비명 후 show tables를 했습니다. 

Database changed

mysql> show tables;

Empty set (0.00 sec)

그럼 워크밴치에 개발환경에서 넣었던 데이터들이 남아있는건 정상인거죠?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 개발환경과는 상관없을 것이고요.

DB는 존재하는데 테이블이 없는 것은 sequelize.sync()가 제대로 실행되지 않은 것 같은데요. 서버 실행할 때 sequelize 관련 로그들이 주르륵 뜨지 않나요?

parksh626님의 프로필 이미지
parksh626
질문자

아 이런 에러가 뜹니다..!

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '비밀번호';

이것과 .env비밀번호를 일치 시켰는데 무슨 권한 에러일까요..?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

using password no이면 비밀번호를 입력하지 않았다는 것이고 config.js를 인식 못하고 있는 겁니다. 서버쪽에 .env 만드셨나요?

parksh626님의 프로필 이미지
parksh626
질문자

config.js에 비밀번호를 null로 해놨네요 ㅠㅠ 

권한 에러는 덕분에 해결됐습니다! 감사합니다.

그런데 여전히 로그인 후 네트워크는 성공인데 me에 데이터가 전달 되지 않는 상황입니다.

DROP DATABASE를 하면 테이블 자체가 사라지구요..

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

회원가입은 하셨나요? 회원 가입 후에는 db에 데이터가 들어있나요?

parksh626님의 프로필 이미지
parksh626
질문자

db에 데이터가 들어있는걸 확인하는건 워크밴치를 보는것이죠??

워크밴치에는 아무런 변화가 없습니다. 데이터가 저장이 되지 않는것 같아요.

하지만 회원가입을 누르면 네트워크 200이 뜨면서 성공했다고 하고,

콘솔에는 아래와 같이 찍힙니다.

로그인까지 해봐도 네트워크는 200이 뜨지만 me는 여전히 null입니다.

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

워크벤치는 개발 환경에 연결된 것 아닌가요? 워크벤치에 배포환경도 세팅 하셨나요? 데이터는 mysql에서 쿼리 날려보셔도 되고요.

혹시 프론트랑 백엔드랑 ip가 다른가요?

parksh626님의 프로필 이미지
parksh626
질문자

워크벤치에 배포환경을 세팅하는게 우분투에 mysql-server과 mysql_secure_installation을 설치하는건가요? 그 과정은 했습니다. 

그리고 프론트랑 백엔드 ip는 다릅니다.

back/app.js에는 cors안에 프론트 주소를 입력했고,

front/sagas/index.js에는 baseURL을 백엔드 주소를 입력해놨습니다.

질문이 자꾸 이어지네요 ㅠㅠ 죄송합니다. 우분투에서 mysql 세팅이 됐는지 확인을 어떻게 해봐야할까요?? 

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

아뇨 워크벤치에서 접속하는 버튼 만들잖아요. 그걸 개발환경으로만 만드시고 배포환경용 버튼은 안 만드신것같네요. 그리고 백엔드랑 프론트랑 도메인 다르면 로그인 어렵습니다.

혹시 문제 해결하셨으면 공유좀 해주실 수 있나요?

back > config > config.js 

Database 이름 확인 해보세요~

수정 후 같은 문제 해결했습니다.

parksh626님의 프로필 이미지
parksh626
질문자

버튼을 따로 만들어도 안에 내용이 개발환경용으로 만든 데이터베이스가 그대로 들어있던데 따로만들때 배포환경에 맞는 설정이 따로 있나요..?

@분당꿀이님 database의 이름을 어떻게 수정하셔서 해결하셨나요? 답변주시면 감사하겠습니다 ㅠㅠ

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

버튼을 따로 만들 때 서버쪽 주소 배포환경 주소/포트/계정으로 바꾸셔야 합니다. localhost로 넣으면 개발환경인 것이고요.

@parksh626

저는 back / config / config.js  database 이름을 수정해서 고쳤습니다.

development:{

    database:  '요기 수정'

}

test:{

    database:  '요기 수정'

}

production:{

       database:  '요기 수정'

}

parksh626님의 프로필 이미지
parksh626
질문자

도메인 연결하니 문제가 해결됐습니다!

워크벤치에서 배포된 데이터를 확인하는 버튼은 만들지 못해서 워크벤치로 데이터 내용은 볼 수 없지만 'use 데이터베이스 이름' > 'select * from 테이블명' 으로 데이터가 등록됐는지 확인하고 도메인 연결하니까 로그인 문제가 해결됐습니다.

감사합니다! 

parksh626님의 프로필 이미지
parksh626

작성한 질문수

질문하기