数据库
数据库迁移
审查并执行 D1 迁移,保留备份与发布检查。
D1 / SQLite 维护独立、可审查的迁移历史。
| Schema | 配置 | 迁移目录 |
|---|---|---|
packages/db/src/schema-d1.ts | packages/db/drizzle.config.d1.ts | packages/db/migrations-d1/ |
D1
pnpm db:generate:d1
pnpm db:migrate:d1:local
pnpm db:seed:d1
pnpm db:migrate:d1:status
pnpm db:migrate:d1:remote
pnpm db:migrate:d1:status --strict生成脚本维护 packages/db/migrations-d1/manifest.json 的 SQL 哈希,拒绝修改已经记录的迁移。远端迁移会导出备份、在本地克隆上迁移并检查外键,然后再应用远端。派生前需将 scripts/d1-migrations.ts 中的演示数据库名称与 wrangler.jsonc 对齐;scripts/seed-d1.ts 使用 DB 绑定,并没有硬编码数据库名称。详见 Cloudflare 部署。
pnpm cf:deploy 先检查远端历史是否与本地一致;待执行迁移会阻止发布。pnpm cf:upload 不应被视为替代这道发布门禁。
从老库升级
最新版本重整了基线,不能把新 0000_initial.sql 直接当成已有生产库的升级迁移。旧库可能有旧迁移 journal 和设置表:先备份、在克隆上比对 schema 与历史,为自己的派生项目设计增量迁移。最新根脚本没有旧的设置导出命令或 drizzle:* 别名。
新增变更先写失败测试;只追加新的迁移,不修改已应用 SQL 或手工伪造 journal。测试当前 schema、SQL 查询、默认值、索引和失败回滚,再发布。