使用 Drizzle Kit 进行迁移

This guide assumes familiarity with:

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

npm
yarn
pnpm
bun
npm i drizzle-kit
IMPORTANT

请务必先浏览 Drizzle 开始迁移基础知识,然后选择最适合你业务需求的 SQL 迁移流程。

Drizzle Kit 可根据你的模式生成并运行 SQL 迁移文件,将模式直接推送到数据库,从数据库中提取模式,启动 Drizzle Studio,并提供一些实用命令。

npm
yarn
pnpm
bun
npx drizzle-kit 生成 drizzle-kit 迁移 drizzle-kit 推送 drizzle-kit 拉取 drizzle-kit 检查 drizzle-kit 启动 drizzle-kit studio
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 可以通过 drizzle.config.ts 配置文件或 CLI 参数进行配置。
至少需要提供 SQL dialectschema 路径,以便 Drizzle Kit 知道如何生成迁移。

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

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

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

npm
yarn
pnpm
bun
npx drizzle-kit push --config=drizzle-dev.drizzle.config 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