news 2026/9/17 18:01:56

Open Agents 数据库迁移管理:Drizzle Kit 与部署自动迁移完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open Agents 数据库迁移管理:Drizzle Kit 与部署自动迁移完整指南

Open Agents 数据库迁移管理:Drizzle Kit 与部署自动迁移完整指南

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

Open Agents 迁移方案一句话看懂

Open Agents 是一个开源的云代码 Agent 模板项目,内置了基于Drizzle Kit的数据库迁移管理和部署时自动迁移机制。它用 schema.ts 描述表结构,用 drizzle.config.ts 生成 SQL 迁移文件,再在构建阶段自动执行迁移——开发者只需改一个文件,剩下的交给流水线。🚀

核心概念:Schema、迁移文件与 Journal 三件套

Open Agents 的数据库层由三部分协作完成:

文件作用
lib/db/schema.ts用 Drizzle ORM 声明式定义所有表结构(users、accounts、sessions 等)
lib/db/migrations/Drizzle Kit 生成的 SQL 迁移文件,每个文件是一次版本化的结构变更
meta/_journal.json迁移日志,记录每条迁移的序号、时间戳与标签,保证执行顺序

以最新的迁移文件为例,内容就是纯 SQL:

0036_faulty_yellow_claw.sql:ALTER TABLE "sessions" ADD COLUMN IF NOT EXISTS "sandbox_provisioning_run_id" text;

迁移目录里已沉淀了 30 多条历史迁移(从00000036),项目演进过程中每一次表结构变更都以独立文件形式留档,可追溯、可重放。

本地开发:Drizzle Kit 四大常用命令

所有数据库操作命令都配置在 apps/web/package.json 的 scripts 中,用 Bun 即可一键执行:

# 生成迁移文件(schema 变更后执行) bun run db:generate # 将 schema 直接同步到本地数据库(开发期快速调试) bun run db:push # 执行 SQL 迁移文件 bun run db:migrate # 图形化查看数据库(Drizzle Studio) bun run db:studio

推荐的日常开发流:修改schema.tsdb:generate生成迁移 → 提交.sql文件。db:push仅用于本地快速试错,不应产生迁移文件。

配置侧只需三行关键设置(见 drizzle.config.ts):

export default defineConfig({ schema: "./lib/db/schema.ts", // 声明式结构定义 out: "./lib/db/migrations", // SQL 迁移输出目录 dialect: "postgresql", });

部署自动迁移:构建即迁移

这是 Open Agents 最贴心的设计——package.json 中的 build 脚本被改成了:

"build": "bun run db:migrate:apply && next build"

也就是说,每次部署构建前都会先运行 lib/db/migrate.ts,由它调用drizzle-ormmigrate()把 migrations/ 下的 SQL 按序应用到POSTGRES_URL指向的数据库。上线新表结构不再需要手动执行任何脚本。✅

migrate.ts还内置了两层健壮性保护,值得新手学习:

  • 缺配置即跳过:若未设置POSTGRES_URL,打印提示后直接退出,不会让部署失败;
  • 旧库自动对账:检测到数据库已有表结构但没有迁移历史时,会逐条重放迁移 SQL,并把"表已存在"这类可忽略的 PostgreSQL 错误码(如42P07重复表、42701重复列)自动跳过,实现平滑接管旧库。

迁移状态记录在drizzle.__drizzle_migrations表中,每条迁移以 hash + 时间戳去重,重复部署不会重复执行。

防漂移检查:确保迁移文件与 Schema 同步

改了schema.ts却忘了生成迁移?scripts/check-migrations.ts 帮你兜底:

bun run db:check

它先快照现有.sql文件,再运行drizzle-kit generate,若发现有新生成的迁移文件,立即报错并提示你提交:

❌ Schema has drifted from migrations. 请运行db:generate并提交结果。

建议在 CI 中挂上这一步,让"漏提交迁移文件"这类事故在合并前就被拦下。

新手上手清单

  1. 配置连接:在.env.local中设置POSTGRES_URL(配置加载逻辑见 drizzle.config.ts);
  2. 首次建库:本地执行bun run db:migrate,全部迁移会按 journal 顺序执行;
  3. 日常迭代:改 schema.ts →db:generate→ 提交生成的.sql
  4. 上线:无需任何手动操作,构建阶段的自动迁移会接管一切;
  5. 保险丝:定期运行db:check,防止 schema 与迁移漂移。

整套方案的核心思想就一句话:结构定义、迁移 SQL、执行日志三者分离,开发靠 Drizzle Kit,上线靠构建钩子。对新手而言,你只需要关心schema.ts这一个文件。✨

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 18:00:30

医药研发项目管理痛点与iLabPower PM系统解决方案

1. 医药研发项目管理的核心痛点与转型契机医药研发行业正面临前所未有的效率挑战。根据我的项目经验,一款新药从实验室到上市平均需要10-15年时间,耗资26亿美元,而成功率不足12%。这种"高投入、长周期、高风险"的特性,使…

作者头像 李华
网站建设 2026/9/17 17:58:08

Access数据库复习题拆解:从SQL查询到DAO记录集全攻略

简介:中财ACCESS数据库复习题.docx是一份面向ACCESS数据库课程学习与考前复习的要点与题库资料,覆盖数据库三级模式结构、关系模型完整性约束、并发控制、实体间联系、SQL选择投影联接操作、规范化及E-R模型转换等核心概念,也包含针对具体数据…

作者头像 李华
网站建设 2026/9/17 17:57:38

M1 Mac外接2K显示器模糊?教你开启HiDPI清晰锐利

说实话,M1芯片的MacBook Air和MacBook Pro在性能、续航上确实让人满意,但如果你恰好手头是一台2K分辨率的显示器,插上去那一刻可能就想退货:字体发虚、图标毛边、整个界面像蒙了一层雾。这个问题困扰了很多人,甚至有人…

作者头像 李华
网站建设 2026/9/17 17:57:33

iostat磁盘IO性能排查实战:安装、指标解读与数据库卡顿诊断案例

先讲个真实场景:半夜两点,告警群里跳出“数据库IO延迟飙高”。我登录服务器后,还没敲top之前,先把iostat -x -m 1 5跑了起来——这几乎成了我排查IO类问题的肌肉记忆。iostat是Linux系统里最基础的IO性能观测工具,它直…

作者头像 李华
网站建设 2026/9/17 17:57:24

ThinkPHP8整合Workerman实现高性能WebSocket服务

1. 项目概述最近在重构一个需要实时通信功能的项目时,我选择了ThinkPHP8作为基础框架,同时整合Workerman来实现高性能的WebSocket服务。这种组合在实际项目中非常实用,既能利用ThinkPHP成熟的MVC架构,又能通过Workerman突破传统PH…

作者头像 李华
网站建设 2026/9/17 17:57:23

SQL Server日期时间格式转换:CONVERT样式代码详解与性能优化

做SQL Server开发的人,迟早会遇到这样的需求:把一个datetime字段输出成2024-01-15这种纯日期,或者拼成20240115作为流水号,又或者要把"2024年1月15日"这样的中文格式塞进报表里。很多人第一反应是拿字符串函数去截取&am…

作者头像 李华