数据库迁移工具-修改表
如何修改表
- 使用 Sequelize-Cli 管理数据库的目的就是为了监控数据库的变化
- 所以我们不能直接修改表的结构, 如果要修改, 必须通过
migration
文件修改 - 这样我们就能记录修改的每一步操作, 就能追踪修改的整个过程, 就能回退到指定版本
修改表步骤
- 通过
migration:generate
创建迁移文件
npx sequelize migration:generate --name cheng-user
- 在迁移文件中的
up
内部编写修改表结构的内容
进入 sequelize 官网:https://sequelize.org/v5/class/lib/query-interface.js~QueryInterface.html 相关所编写的内容都是基于官方文档当中的内容进行编写的:
例如博主现在想要添加一列,该如何进行添加呢,博主在进行查阅官方文档的时候发现有一个方法是叫 addColumn
所以很明确的就可以知道,这是一个添加一列的相关方法,相关参数我相信也不需要我过多的进行一一解释了直接上代码如下:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
return queryInterface.addColumn('Users', 'age', Sequelize.INTEGER);
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
}
};
- 通过
db:migrate
执行编写好的迁移文件
npx sequelize db:migrate
数据库当中的体现如下:
如上可以看到我们已经成功的添加了一列 age
那么如果我需要删除这一列该如何进行删除呢,通过观察官方文档可以发现,有一个 removeColumn
但是要写在 down
内部:
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
/*
Add altering commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.createTable('users', { id: Sequelize.INTEGER });
*/
return queryInterface.addColumn('Users', 'age', Sequelize.INTEGER);
},
down: (queryInterface, Sequelize) => {
/*
Add reverting commands here.
Return a promise to correctly handle asynchronicity.
Example:
return queryInterface.dropTable('users');
*/
return queryInterface.removeColumn('Users', 'age');
}
};
然后在通过 db:migrate:undo
进行回退(删除)操作即可:
npx sequelize db:migrate:undo
数据库当中的体现如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2021-02-01 Intellij IDEA