Skip to content
返回部署

Drizzle Migrate

轻量 TypeScript 优先 ORM 迁移用于 Postgres、MySQL、SQLite。

CI/CD进阶

为什么

Drizzle 是轻量 ORM,完整 TypeScript 推断无 codegen。迁移是 SQL 文件,易审查应用。包比 Prisma 小。

何时使用

边缘/serverless 应用需轻量 ORM 用 Drizzle。需 Prisma Studio GUI 避免。

如何做

1. Schema — schema.ts 配 pgTable/mysqlTable 2. 配置 — drizzle.config.ts 配 dialect + credentials 3. 生成 — npx drizzle-kit generate(创建 SQL 迁移) 4. 迁移 — npx drizzle-kit migrate(应用) 5. 推送 — npx drizzle-kit push(开发,无迁移文件) 6. Studio — npx drizzle-kit studio(GUI) 7. 内省 — npx drizzle-kit introspect(现有 DB)

示例

// schema.ts import { pgTable, serial, varchar } from "drizzle-orm/pg-core"; export const users = pgTable("users", { id: serial("id").primaryKey(), email: varchar("email").notNull().unique(), }); // drizzle.config.ts export default { schema: "./schema.ts", out: "./drizzle", dialect: "postgresql", dbCredentials: { url: process.env.DATABASE_URL! }, }; # 生成和迁移 npx drizzle-kit generate # 在 drizzle/ 创建 SQL npx drizzle-kit migrate # 应用迁移 // 代码中使用 import { drizzle } from "drizzle-orm/node-postgres"; const db = drizzle(pool, { schema });

常见问题

  • ⚠迁移顺序 — Drizzle 用时间戳,确保团队时钟同步
  • ⚠生产 push — push 跳过迁移文件,生产用 migrate
  • ⚠环境间配置漂移 — 使用基础设施即代码(Terraform/Pulumi)保持 dev/staging/prod 一致

最佳实践

  • ✓生产用 generate + migrate — 可审查 SQL 文件
  • ✓仅开发用 push — 快速迭代,无迁移历史
  • ✓设置健康检查和优雅关闭 — 处理 SIGTERM 以在退出前排空进行中的请求

常见问题解答