인프런 커뮤니티 질문&답변
생성된 DB는 수정이 불가능한가요?
작성
·
201
답변 1
0
혹시 마이그레이션을 통해 테이블을 생성하면 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) {
}
};
결과

DB를 사용하면서 추가로 궁금한점이 있어서 질문드릴께요
제가 고차함수를 사용하다 모르고 다음과 같이 ()를 안적어줬습니다.
const onClickBtn = useCallback((data) => {
console.log(data);
});
<Button onClick={onClickBtn(data)}>Click</Button>
이후에 오류를 해결하고 mysql 워크벤치에서 관련 테이블을 클릭하니까 워크벤치가 자동으로 꺼지더라고요
단기간의 에러인것같아서 워크벤치 재실행 및 재부팅을 했는데도 동일하게 워크벤치 접속후에 테이블명만 클릭하면 자동을 워크벤치가 종료됩니다.
혹시 해당 이유에대해서 알수있을까요?
답변 정말 감사합니다.
혹시 워크벤치를 재설치하게되면 기존에 생성, 설정되어있던 테이블과 관계들이 사라지게되나요?
재설치를 해본적이 없어서 어떤 작업을 추가해야될지 궁금해서 질문드립니다.
배포직전이라 좀 조심스러워서요
몰랐던 정보였는데 감사합니다.
근데 위 문제가 발생했을 때 특정 액션이 반복해서 실행됬습니다.
해당 액션은 로그인한 사용자의 알람정보를 db에서 검색한 뒤 가져오는 액션입니다
이 액션의 반복 실행으로 인해 많은 쿼리문 생성 및 실행되서 위와 같은 오류가 발생할수도 있을까요?
워크벤치를 재설치하고 동일하게 문제가 발생해서 질문드립니다.
문제가 해결되지 않아 이후에 mysql comment에서 프로세스를 확인해보니 다음과 같이 결과가 나왔습니다.
혹시 이벤트스케줄러의 time이 너무 많아서 해당 문제가 발생한 것 일까요?
구글링을해도 해당 오류에 대한 원인을 찾을 수 없어 질문드리겠습니다.






마이그레이션을 학습해봐야겠네요
빠른 답변 감사합니다 ㅎㅎ