๋ชจ๋ธ์ ๋ฐ์ดํฐ ํ์, ์ปฌ๋ผ ์ถ๊ฐ, ์ ๊ฑฐ, ํ ์ด๋ธ ์ถ๊ฐ, ํ ์ด๋ธ ์ ๊ฑฐ์ ๊ฐ์ ์ด์์ค์ธ ์๋ฒ ์์ DB ๋ณ๊ฒฝ ์์ ์ ํธ๋ฆฌํ๊ฒ ๋์์ค๋ค.
model ๋จผ์ ์์ ํ๊ณ ์งํํ๋ค.
ํ๋์ ํ์ผ์ ์์ ํ๋ฉด์ ์ฐ์ง ์๊ณ ๋ณ๊ฒฝ์ด ์๊ธธ ๋ ๋ง๋ค Migration์ ์์ฑํ์ฌ ์ด์ฉํ๋ค.
๋ช ๋ น์ด ์ ๋ ฅ์ ํด์ migrationํ์ผ์ ๋ง๋ค๋ฉด
sequelize migration:create --name ์์ฑํ๋ migration ์ด๋ฆ
ํ์์คํฌํ๊ฐ ์ ์ฉ๋ .js ํ์ผ์ด ์์ฑ์ด ๋๋ค.
ํ์ผ์ ์ด์ด๋ณด๋ฉด
module.exports = {
up: async (queryInterface, Sequelize) => {
},
down: async (queryInterface, Sequelize) => {
}
}
์ด ์๊ณ up = ๋ง์ด๊ทธ๋ ์ด์ down = ๋กค๋ฐฑ ์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค.
ํ ์ด๋ธ ์์ฑ, ์ปฌ๋ผ ์ถ๊ฐ ๊ฐ์ ๋๋น ์์ฑ์ด ๋ณ๊ฒฝ ๋๋ ๊ธฐ๋ฅ์ up์ ์์ฑ ํ๊ณ
์ปฌ๋ผ ์ญ์ , ์ ์์ฑ์ผ๋ก ๋กค๋ฐฑ ํ๋ ๊ธฐ๋ฅ์ down์ ์์ฑ์ ํ๋ค.
๋ณ๊ฒฝ ์ ์ฉ
sequelize db:migrate
๋ณ๊ฒฝ ํ migration๋ฅผ ๋๋น์ ์ ์ฉ ์ํจ๋ค.
์์ฑ์ ์ฃผ์ด์ ๊ฐ๋ฐDB, ํ๋ก๋์ DB, ํ ์คํธDB ๋ฐ๋ก ๋ฐ๋ก migration์ ์ ์ฉ ์์ผ ์ค ์ ์๋ค.
default๋ก๋ development ๋ก ์ค์ ๋์ด ์๋ค.
ex)
sequelize db:migrate --env development
sequelize db:migrate --env test
sequelize db:migrate --env production
--env ์์ฑ ์ ์ฉ ๊ฐ๋ฅ
sequelize db:migrate:undo
--env ์์ฑ ์ ์ฉ ๊ฐ๋ฅ
๋ชจ๋ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋๋๋ฆฐ๋ค.
sequelize db:migrate:undo:all
createTable() ํจ์๋ฅผ ์ฌ์ฉ
// await queryInterface.createTable(ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ๋ช
:๋ฐ์ดํฐ(์์ฑ,์ต์
) ...)
await queryInterface.createTable('goodsLogs', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
userIndex: {
type: Sequelize.STRING,
allowNull: false
}
})
dropTable() ํจ์ ์ฌ์ฉ
//ํ
์ด๋ธ ๋ช
await queryInterface.dropTable('goodsLogs')
addColumn() ํจ์ ์ฌ์ฉ
//await queryInterface.addColumn(ํ
์ด๋ธ๋ช
, ์ถ๊ฐํ๋ ์ปฌ๋ผ๋ช
, {
// type: ์ปฌ๋ผ ๋ฐ์ดํฐ ์์ฑ
// })
await queryInterface.addColumn('goodsLogs', 'test2', {
type: Sequelize.INTEGER
})
removeColumn() ํจ์ ์ฌ์ฉ
//await queryInterface.removeColumn(ํ
์ด๋ธ๋ช
, ์ ๊ฑฐํ๋ ์ปฌ๋ผ ๋ช
)
await queryInterface.removeColumn('goodsLogs', 'test2')
renameColumn() ํจ์ ์ฌ์ฉ
//await queryInterface.renameColumn(ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ ์ด๋ฆ ๋ณ๊ฒฝ ์ , ์ปฌ๋ผ ์ด๋ฆ ๋ณ๊ฒฝ ํ )
await queryInterface.renameColumn('goodsLogs', 'test2', 'test1')
changeColumn() ํจ์ ์ฌ์ฉ
// await queryInterface.changeColumn(ํ
์ด๋ธ๋ช
, ์ปฌ๋ผ๋ช
, {
// ์ปฌ๋ผ ๋ฐ์ดํฐ ์์ฑ,
// ์ปฌ๋ผ ์ต์
// })
await queryInterface.changeColumn('goodsLogs ', 'test2', {
type: Sequelize.INTEGER,
allowNull: true
})
์ถ์ฒ :
๊ฐ์ฌํฉ๋๋ค๐
https://crispypotato.tistory.com/156
https://jeonghwan-kim.github.io/sequelize-migration/
https://stackoverflow.com/questions/62667269/sequelize-js-how-do-we-change-column-type-in-migration
https://stackoverflow.com/questions/55114922/change-column-name-sequilize