inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

시퀄라이즈 sync + nodemon

생성된 DB는 수정이 불가능한가요?

208

hib4888

작성한 질문수 47

0

안녕하세요 제로초님 강의 너무 잘 듣고있습니다!!

실습진행하면서 정상적으로 DB를 생성했는데

만약 DB생성 이후에 컬럼을 추가, 모델이름 변경, 테이블관계 변경등의 변경사항이 발생된다면 그 때는 새롭게 DB를 생성해야되는건가요?

 

react nodejs express redux Next.js

답변 1

0

제로초(조현영)

테이블을 수정하시면 됩니다. 코드에서 하시면 마이그레이션을 배우셔야 하고, 워크벤치에서 직접 수정하는 방법도 있습니다.

0

hib4888

마이그레이션을 학습해봐야겠네요

빠른 답변 감사합니다 ㅎㅎ

0

hib4888

혹시 마이그레이션을 통해 테이블을 생성하면 id와 관계필드는 수동으로 생성해줘야 되나요?

아래와 같이 alert테이블의 관계를 정의한 뒤 테이블을 생성해서 확인해보니 마이그레이션에서 설정한 type필드외에 id, 관계컬럼이 생성되지 않아서 질문드립니다.

 

models/alert.js

const DataTypes = require('sequelize');
const { Model } = DataTypes;

module.exports = class Alert extends Model {
  static init(sequelize) {
    return super.init({      
      type: {
        type: DataTypes.STRING(10),
        allowNull: false,
      },
    }, {
      modelName: 'Alert',
      tableName: 'alerts',
      charset: 'utf8mb4',
      collate: 'utf8mb4_general_ci',
      sequelize,
    });
  }
  static associate(db) {
    db.Alert.belongsTo(db.Post);
    db.Alert.belongsTo(db.User, { as: 'Alerter' });
    db.Alert.belongsTo(db.User, { as: 'Alerted' });        
  }
};

 

마이그레이션

'use strict';

module.exports = {
  async up (queryInterface, Sequelize) {
    await queryInterface.createTable('alerts', {
      type: {
        type: Sequelize.STRING(10),
        allowNull: false,
      },      
    });
  },

  async down (queryInterface, Sequelize) {

  }
};

 

결과

image

0

제로초(조현영)

네 전부 수동으로 생성해야 합니다.

0

제로초(조현영)

migration이 모델을 읽을 수 있는 기능이 있나 모르겠네요.

0

hib4888

답변 감사합니다.

마이그레이션의 모델 읽는 기능을 찾아본뒤 없으면 수동으로 id랑, 관계컬럼을 생성해야겠네요.

감사합니다!!

0

hib4888

DB를 사용하면서 추가로 궁금한점이 있어서 질문드릴께요

제가 고차함수를 사용하다 모르고 다음과 같이 ()를 안적어줬습니다.

const onClickBtn = useCallback((data) => {
  console.log(data);
});

<Button onClick={onClickBtn(data)}>Click</Button>

 

이후에 오류를 해결하고 mysql 워크벤치에서 관련 테이블을 클릭하니까 워크벤치가 자동으로 꺼지더라고요

단기간의 에러인것같아서 워크벤치 재실행 및 재부팅을 했는데도 동일하게 워크벤치 접속후에 테이블명만 클릭하면 자동을 워크벤치가 종료됩니다.

혹시 해당 이유에대해서 알수있을까요?

0

제로초(조현영)

이건 워크벤치 에러라사 워크벤치를 먼저 재설치해보아야 할 것 같슴니다.

0

hib4888

답변 정말 감사합니다.

혹시 워크벤치를 재설치하게되면 기존에 생성, 설정되어있던 테이블과 관계들이 사라지게되나요?

재설치를 해본적이 없어서 어떤 작업을 추가해야될지 궁금해서 질문드립니다.

배포직전이라 좀 조심스러워서요

 

0

제로초(조현영)

워크벤치는 단순히 조회만 하는 도구라 영향을 끼치지 않습니다.

0

hib4888

몰랐던 정보였는데 감사합니다.

근데 위 문제가 발생했을 때 특정 액션이 반복해서 실행됬습니다.

해당 액션은 로그인한 사용자의 알람정보를 db에서 검색한 뒤 가져오는 액션입니다

이 액션의 반복 실행으로 인해 많은 쿼리문 생성 및 실행되서 위와 같은 오류가 발생할수도 있을까요?

0

제로초(조현영)

아뇨 그럴 것 같지는 않습니다. 저희는 데이터가 천만개 넘고 1초에 쿼리 실행이 천번 넘게 발생하는데도 워크벤치 잘 켜집니다.

0

hib4888

그렇군요 모든 답변들 감사합니다!!

0

hib4888

워크벤치를 재설치하고 동일하게 문제가 발생해서 질문드립니다.

문제가 해결되지 않아 이후에 mysql comment에서 프로세스를 확인해보니 다음과 같이 결과가 나왔습니다.

혹시 이벤트스케줄러의 time이 너무 많아서 해당 문제가 발생한 것 일까요?

구글링을해도 해당 오류에 대한 원인을 찾을 수 없어 질문드리겠습니다.

 

image

0

제로초(조현영)

전혀 감이 잡히는 게 없네요 ㅠ

0

hib4888

곤란한 질문드려서 죄송합니다.

개발을 하는데는 지장이 없으니 추후에 관련 정보를 찾아서 해결해보겠습니다,

답변들 감사합니다

넥스트 버젼 질문

0

90

2

로그인시 401 Unauthorized 오류가 뜹니다

0

104

1

무한 스크롤 중 스크롤 튐 현상

0

198

1

특정 페이지 접근을 막고 싶을 때

0

117

2

createGlobalStyle의 위치와 영향범위

0

104

2

인라인 스타일 리렌더링 관련

0

98

2

vsc 에서 npm init 설치시 오류

0

159

2

nextjs 15버전 사용 가능할까요?

0

166

1

화면 새로고침 문의

0

129

1

RTK에서 draft, state 차이가 있나요?

0

164

2

Next 14 사용해도 될까요?

0

455

1

next, node 버전 / 폴더 구조 질문 드립니다.

0

359

1

url 오류 질문있습니다

0

218

1

ssh xxxxx로 우분투에 들어가려니까 port 22: Connection timed out

0

391

1

sudo certbot --nginx 에러

0

1295

2

Minified React error 콘솔에러 (hydrate)

0

481

1

카카오 공유했을 때 이전에 작성했던 글이 나오는 버그

0

257

1

프론트서버 배포 후 EADDRINUSE에러 발생

0

341

1

npm run build 에러

0

526

1

front 서버 npm run build 중에 발생한 에러들

0

399

1

서버 실행하고 브라우저로 들어갔을때 404에러

0

351

2

css 서버사이드 랜더링이 적용되지 않아서 문의 드립니다.

0

291

1

팔로워 3명씩 불러오고 데이터 합쳐주는걸로 바꾸고 서버요청을 무한으로하고있습니다.

0

251

2

해시태그 검색에서 throttle에 관해 질문있습니다.

0

207

1