使用 Drizzle Kit 进行迁移

本指南假定您已熟悉:

Drizzle Kit 是一个用于使用 Drizzle 管理 SQL 数据库迁移的 CLI 工具。

npm
yarn
pnpm
bun
npm i -D drizzle-kit
IMPORTANT

请先阅读 Drizzle 的 入门指南迁移基础,并选择最适合你业务需求的 SQL 迁移流程。

基于你的模式,Drizzle Kit 让你可以生成并运行 SQL 迁移文件、
直接将模式推送到数据库、从数据库拉取模式、启动 drizzle studio,并提供一些实用命令。

npm
yarn
pnpm
bun
npx drizzle-kit generate
npx drizzle-kit migrate
npx drizzle-kit push
npx drizzle-kit pull
npx drizzle-kit check
npx drizzle-kit up
npx drizzle-kit studio
npx drizzle-kit export
drizzle-kit generate允许你根据 Drizzle 模式生成 SQL 迁移文件,无论是在声明时还是后续变更时, 点此查看
drizzle-kit migrate允许你将生成的 SQL 迁移文件应用到数据库, 点此查看
drizzle-kit pull允许你拉取(反向解析)数据库模式,将其转换为 Drizzle 模式并保存到你的代码库中, 点此查看
drizzle-kit push允许你在声明时或后续模式变更时,将你的 Drizzle 模式推送到数据库, 点此查看
drizzle-kit studio将连接到你的数据库并启动 Drizzle Studio 的代理服务器,你可以使用它方便地浏览数据库, 点此查看
drizzle-kit check会遍历所有已生成的迁移,并检查生成的迁移是否存在任何竞争条件(冲突), 点此查看
drizzle-kit up用于升级之前生成的迁移快照, 点此查看
drizzle-kit export用于将 TS 模式转换为原始 SQL DDL 并输出, 点此查看

Drizzle Kit 可通过 drizzle.config.ts 配置文件或 CLI 参数进行配置。
至少需要提供 SQL dialectschema 路径,这样 Drizzle Kit 才知道如何生成迁移。

📦 <project root>
 ├ 📂 drizzle
 ├ 📂 src
 ├ 📜 .env
 ├ 📜 drizzle.config.ts  <--- Drizzle 配置文件
 ├ 📜 package.json
 └ 📜 tsconfig.json
simple config
extended config
import { defineConfig } from "drizzle-kit";

export default defineConfig({
  dialect: "mysql",
  schema: "./src/schema.ts",
});

你可以通过 CLI 参数提供 Drizzle Kit 配置路径,这在你有多个数据库阶段、多个数据库,或者同一项目中使用不同数据库时非常有用:

npm
yarn
pnpm
bun
npx drizzle-kit push --config=drizzle-dev.drizzle.config
npx drizzle-kit push --config=drizzle-prod.drizzle.config
📦 <project root>
 ├ 📂 drizzle
 ├ 📂 src
 ├ 📜 .env
 ├ 📜 drizzle-dev.config.ts
 ├ 📜 drizzle-prod.config.ts
 ├ 📜 package.json
 └ 📜 tsconfig.json