인프런 커뮤니티 질문&답변
시퀄라이즈에서 마이그레이션 폴더
작성
·
309
답변 8
1
제로초(조현영)
지식공유자
나중에 테이블 컬럼을 변경하거나 추가/제거할 때 models 안에 파일을 바꾼다고 그대로 반영되지 않습니다. migrations를 통해서 실제 테이블을 변경해주어야 DB에 반영됩니다. migrations 문서를 작성해두면 좋은게 나중에 문제가 생겼을 때 롤백을 할 수 있습니다.
0
0
0
0
제로초(조현영)
지식공유자
마이그레이션 폴더 안에 저런 파일들을 만드는 거고요. 마이그레이션 폴더에 기록은 남지 않습니다.
마이그레이션 폴더 안에 파일들을 보고 마이그레이션이 진행됩니다. 진행 후에는 직접 models를 수동으로 수정도 해줘야합니다.
0
원피스를 찾아서
질문자
마이그래이션 폴더로 이전상태로 변경하거나 수정사항을 변경한다고 생각하면 될까요?
찾아보니 마이그레이션을 실행시키면 마이그레이션 폴더에 기록이 남는다고 하는데 잘못 이해하고 있는건가요?
0
제로초(조현영)
지식공유자
const fs = require('fs');
const parse = require('csv-parse/lib/sync');
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
queryInterface.addColumn(
'male_lower_input_items',
'korean',
{
type: Sequelize.STRING(20),
allowNull: true,
comment: '한글 브랜드명',
},
)
.then(() => {
const text = fs.readFileSync('lower_item.csv');
const records = parse(text.toString('utf-8'));
return Promise.all(records.map(record => (
queryInterface.sequelize.query(
`
UPDATE male_lower_input_items
SET korean = :korean
WHERE code = :code
`,
{
replacements: {
code: record[7],
korean: record[9],
},
},
)
)));
});
},
down: (queryInterface) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
queryInterface.removeColumn(
'male_lower_input_items',
'korean',
);
},
};
이렇게 작성해놓으면 up 호출하면 마이그레이션을 진행하고, down을 호출하면 롤백됩니다.
0




