如果你想使用一个数据库运行多个项目,请查看 我们的指南。
Drizzle Kit 配置文件
Drizzle Kit 允许你在 TypeScript 或 JavaScript 配置文件中声明配置选项。
📦 <project root>
├ ...
├ 📂 drizzle
├ 📂 src
├ 📜 drizzle.config.ts
└ 📜 package.jsonimport { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "singlestore",
schema: "./src/schema.ts",
out: "./drizzle",
});扩展配置文件示例
import { defineConfig } from "drizzle-kit";
export default defineConfig({
out: "./drizzle",
dialect: "singlestore",
schema: "./src/schema.ts",
dbCredentials: {
url: "mysql://user:password@host:3306/dbname",
},
introspect: {
casing: "camel",
},
migrations: {
prefix: "timestamp",
table: "__drizzle_migrations__",
},
breakpoints: true,
strict: true,
verbose: true,
});多个配置文件
你可以在项目中拥有多个配置文件,当你有多个数据库阶段、多个数据库,或者同一项目中有不同数据库时,这会非常有用:
npx drizzle-kit generate --config=drizzle-dev.config.ts
npx drizzle-kit generate --config=drizzle-prod.config.ts
📦 <project root>
├ 📂 drizzle
├ 📂 src
├ 📜 .env
├ 📜 drizzle-dev.config.ts
├ 📜 drizzle-prod.config.ts
├ 📜 package.json
└ 📜 tsconfig.jsonmigrations 文件夹
out 参数允许你定义迁移文件所在的文件夹,它是可选的,默认值为 drizzle。
当同一个项目中有多个数据库的多个独立 schema,并且它们需要不同的迁移文件夹时,这非常有用。
迁移文件夹包含带有 .sql 迁移文件的文件夹,这些文件会被 drizzle-kit 使用
📦 <project root>
├ ...
├ 📂 drizzle
│ ├ 📂 20242409125510_premium_mister_fear
│ ├ 📜 user.ts
│ ├ 📜 post.ts
│ └ 📜 comment.ts
├ 📂 src
├ 📜 drizzle.config.ts
└ 📜 package.jsonimport { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "singlestore", // "mysql" | "sqlite" | "postgresql" | "turso" | "singlestore" | "mssql"
schema: "./src/schema/*",
out: "./drizzle",
});---
dialect
数据库的方言类型
| type | postgresql mysql sqlite turso singlestore mssql cockroach |
| default | — |
| commands | generate migrate push pull check up |
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "mysql",
});schema
glob
基于路径的 drizzle schema 文件或文件夹路径。
| type | string string[] |
| default | — |
| commands | generate push |
📦 <project root>
├ ...
├ 📂 drizzle
├ 📂 src
│ ├ ...
│ ├ 📜 index.ts
│ └ 📜 schema.ts
├ 📜 drizzle.config.ts
└ 📜 package.jsonimport { defineConfig } from "drizzle-kit";
export default defineConfig({
schema: "./src/schema.ts",
});out
定义 SQL migration 文件、schema 的 json 快照以及来自 drizzle-kit pull 命令的 schema.ts 的输出文件夹。
| type | string string[] |
| default | drizzle |
| commands | generate migrate push pull check up |
import { defineConfig } from "drizzle-kit";
export default defineConfig({
out: "./drizzle",
});driver
Drizzle Kit 会根据当前项目中的 dialect: "singlestore" 自动选择一个可用的 SingleStore 驱动。
SingleStore 使用与 MySQL 兼容的连接参数,因此通常不需要单独设置 driver 选项。
| type | — |
| default | — |
| commands | migrate push pull |
---
dbCredentials
以 url、user:password@host:port/db 参数形式或特定于方言的驱动程序(aws-data-api d1-http pglite )连接选项形式提供的数据库连接凭据。
| type | driver 连接选项的联合类型 |
| default | — |
| commands | migrate push pull |
import { defineConfig } from 'drizzle-kit'
export default defineConfig({
dialect: "singlestore",
dbCredentials: {
url: "mysql://user:password@host:3306/db",
}
});migrations
当运行 drizzle-kit migrate 时,drizzle 会将已成功应用的迁移记录到数据库中名为 __drizzle_migrations 的日志表里。
migrations 配置选项允许你更改迁移日志 table 的名称。
| type | { table: string } |
| default | { table: "__drizzle_migrations" } |
| commands | migrate |
export default defineConfig({
dialect: "singlestore",
schema: "./src/schema.ts",
migrations: {
table: 'my-migrations-table', // 默认为 `__drizzle_migrations`
},
});introspect
drizzle-kit pull 命令的配置。
casing 负责代码中列键名的大小写形式
| type | { casing: "preserve" | "camel" } |
| default | { casing: "camel" } |
| commands | pull |
import * as p from "drizzle-orm/singlestore-core"
export const users = p.singlestoreTable("users", {
id: p.int().primaryKey().autoincrement(),
firstName: p.varchar("first-name", { length: 255 }),
lastName: p.varchar("LastName", { length: 255 }),
email: p.varchar("email", { length: 255 }),
phoneNumber: p.varchar("phone_number", { length: 255 }),
});SHOW COLUMNS FROM users; Field | Type
--------------+--------------
id | int
first-name | varchar(255)
LastName | varchar(255)
email | varchar(255)
phone_number | varchar(255)---
tablesFilter
drizzle-kit push 和 drizzle-kit pull 默认会管理所有表。
你可以通过 tablesFilter 配置表列表。
tablesFilter 选项允许你指定基于 glob 的表名过滤器,例如 ["users", "user_info"] 或 "user*"
| type | string string[] |
| default | — |
| commands | generate push pull |
import { defineConfig } from "drizzle-kit";
export default defineConfig({
dialect: "singlestore",
tablesFilter: ["users", "posts", "project1_*"],
});---
strict
在运行 drizzle-kit push 命令时,提示确认是否运行已打印的 SQL 语句。
| type | boolean |
| default | false |
| commands | push |
export default defineConfig({
dialect: "singlestore",
strict: false,
});verbose
在 drizzle-kit push 命令期间打印所有 SQL 语句。
| type | boolean |
| default | true |
| commands | generate pull |
export default defineConfig({
dialect: "singlestore",
verbose: false,
});breakpoints
Drizzle Kit 会自动将 --> statement-breakpoint 嵌入到生成的 SQL 迁移文件中,
这对于不支持在一个事务中执行多个 DDL 变更语句的数据库是必要的(MySQL 和 SQLite)。
breakpoints 选项标志可让你将其开启或关闭
| type | boolean |
| default | true |
| commands | generate pull |
export default defineConfig({
dialect: "singlestore",
breakpoints: false,
});