用途:在 Cloudflare D1(基于 SQLite)上使用 Drizzle ORM 进行类型安全的数据建模与查询,并管理数据库迁移。生产就绪状态,依赖 cloudflare-d1 与 cloudflare-worker-base 技能。
主要能力:以 sqliteTable/text/integer 定义 schema 与关系(relations);用 drizzle-orm/d1 在 Worker 中查询;通过 drizzle-kit generate 生成迁移 SQL,再由 wrangler d1 migrations apply 在本地或远程应用;支持 InferSelectModel/InferInsertModel 显式类型推断。
必要用法:安装 bun add drizzle-orm drizzle-kit;创建 drizzle.config.ts 时必须设置 dialect: 'sqlite'(D1 即 SQLite)与 driver: 'd1-http',并在 dbCredentials 中提供 accountId、databaseId、token(用环境变量,勿提交凭据)。迁移流程为生成 SQL、本地测试(--local)、部署代码、再应用生产(--remote)。日期字段用 integer 加 mode: 'timestamp',动态默认值用 .$defaultFn()。
限制与关键规则:D1 不支持 SQL BEGIN/COMMIT,须用 db.batch([...]) 而非 db.transaction();单行结果用 .get();不要混用 drizzle-kit migrate 与 wrangler apply,生产不要用 drizzle-kit push;外键需显式 onDelete: 'cascade';确保 wrangler.jsonc 绑定与 env.DB 一致。drizzle-kit 0.30+ 对 dialect 与 dbCredentials 做严格校验,旧写法会失败。常见错误包括 BEGIN TRANSACTION 报错、外键约束失败、env.DB 为 undefined、类型实例化过深(用 InferSelectModel 解决)。资料还建议安装时禁用 post-install 脚本、设置 7 天冷却期并审计依赖。官方文档见 orm.drizzle.team。详细内容可参考随附模板(basic-queries.ts、transactions.ts、relations-queries.ts 等)与错误目录等文件。
适用场景:Cloudflare Workers 中的 D1 数据持久层开发、schema 设计与迁移流程搭建。