ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Outline 如何创建、运行并回滚数据库迁移?

Outline 如何创建、运行并回滚数据库迁移? Outline 如何创建、运行并回滚数据库迁移【免费下载链接】outlineThe fastest knowledge base for growing teams. Beautiful, realtime collaborative, feature packed, and markdown compatible.项目地址: https://gitcode.com/GitHub_Trending/ou/outlineOutline 后端使用 PostgreSQL 并通过 Sequelize 管理数据库结构。当你为server/models/中的 Sequelize 模型做了改动加字段、加索引等需要生成一个迁移文件、在目标数据库上执行它并在出问题时把最近一次迁移撤销掉。Outline 已经把这三步封装成package.json里的 yarn 脚本本文按「创建 → 运行 → 验证 → 回滚」的顺序走一遍完整流程并说明在测试库上演练的方式。前提条件已按项目要求完成开发环境搭建依赖用 yarn 安装server/下的后端使用 Koa Sequelize ORM数据库为 PostgreSQL另外还需要 Redis见 AGENTS.md 开头的项目描述。package.json中的 sequelize-cli 脚本是本文所有命令的基础它们的实际定义如下db:create-migration: sequelize migration:create, db:create: sequelize db:create, db:migrate: sequelize db:migrate, db:rollback: sequelize db:migrate:undo, db:reset: sequelize db:drop sequelize db:create sequelize db:migrate迁移文件统一放在 server/migrations 目录文件名带时间戳前缀例如20160619080644-initial.js、20160622043741-add-parent-document.js。新建的迁移会按同样的规则生成到该目录。创建迁移README 的 Migrations 章节给出的创建命令yarn db:create-migration --name my-migration执行后 Sequelize CLI 会在server/migrations/下生成一个新的迁移文件。AGENTS.md 的 Database ORM 一节也给出了等价的直连 CLI 写法并示范了迁移命名习惯yarn sequelize migration:create --nameadd-field-to-table生成之后按你实际要改的模型编辑这个迁移文件建表、加列、加索引等迁移中涉及多表的操作应使用事务AGENTS.md 的要求。运行迁移在主数据库开发环境默认指向的库上应用全部未执行的迁移yarn db:migrate如果只想在测试数据库上跑迁移README 明确支持通过--env参数指定环境yarn db:migrate --env test--env test是安全演练的首选路径先确认迁移在测试库上能跑通再对主库执行yarn db:migrate。验证迁移是否已应用项目文档没有单独给出「查询 Sequelize 迁移记录表」的检查命令但它提供了两种可以判断迁移状态的方式测试流程作为验证路径。Makefile 的test目标完整演示了在测试库上应用迁移的标准做法test: docker compose up -d postgres NODE_ENVtest yarn sequelize db:drop NODE_ENVtest yarn sequelize db:create NODE_ENVtest yarn sequelize db:migrate yarn test即在测试环境先 drop、再 create、最后 migrate迁移能顺利跑完且后续yarn test通过说明该迁移对模型结构是自洽的。注意这里用NODE_ENVtest环境变量来锁定测试库与yarn db:migrate --env test是同一目的。make watch目标用的是同样的 drop/create/migrate 三步。观察生成与落库结果。迁移执行后server/migrations/中新增的文件时间戳早于运行时刻且后端应用模型层可以按新结构正常工作README 也指出开发模式下 Outline 会输出带分类前缀的控制台日志配合DEBUGdatabase与LOG_LEVELdebug可以查看数据库相关的详细日志来排查问题。回滚最近一次迁移撤销最近一次已应用的迁移yarn db:rollback该脚本对应sequelize db:migrate:undo只回滚最后一次迁移不指定其他范围适合「刚跑的这一步写错了」的场景。重建整个数据库破坏性谨慎使用脚本里还有一个db:resetyarn db:reset它依次执行sequelize db:drop sequelize db:create sequelize db:migrate即先删除数据库再重新创建并全量应用迁移。按 package.json 中的定义不带NODE_ENVtest时它作用于默认指向的数据库会丢失其中全部数据只能用于开发环境如需对测试库做同样的重置参照 Makefile 的写法显式带上NODE_ENVtest。生产部署时的迁移执行如果你用容器镜像部署package.json 中定义了 Heroku 构建钩子heroku-postbuild: yarn build yarn db:migrate即在构建完成后自动执行yarn db:migrate。这意味着走这条构建流程时迁移会在部署阶段被自动应用如果你使用其他部署方式就需要在部署流程中手动保留这一步否则数据库结构会落后于代码。边界与限制本文所有命令均来自 README.md 的 Migrations 章节、AGENTS.md 与 Makefile文档未提供「查看当前未应用迁移列表」之类的额外命令执行前可自行阅读server/migrations/下新增文件的内容确认变更范围。db:rollback一次只回滚一步多步错误需要多次执行db:reset是删库重建不要在没有数据备份的库上尝试。迁移文件本身由你手写 SQL/Sequelize 调用文档没有约定模板函数结构直接参照server/migrations/中既有文件的写法即可。【免费下载链接】outlineThe fastest knowledge base for growing teams. Beautiful, realtime collaborative, feature packed, and markdown compatible.项目地址: https://gitcode.com/GitHub_Trending/ou/outline创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表