数据库
数据库迁移
使用 Drizzle ORM 管理数据库 schema 变更与迁移。
MuseMVP 使用 Drizzle Kit 进行 schema 迁移。迁移是根据 schema 变更生成的 SQL 文件,按顺序应用以保持数据库与代码库同步。
迁移流程
编辑 src/backend/database/schema.ts — 添加表、列或索引。
运行 pnpm drizzle:generate — Drizzle 在 src/backend/database/migrations/ 中生成新迁移文件。
检查生成的 SQL — 确认符合预期。
运行 pnpm drizzle:migrate — 将迁移应用到数据库。
迁移文件
0000_complete_blazing_skull.sql
0001_muse_billing_contract.sql
0002_tranquil_wallflower.sql
meta/_journal.json
- SQL 文件:每个迁移是一个编号的 SQL 文件(如
0001_*.sql)。 - Journal:
meta/_journal.json记录迁移顺序与元数据。
勿修改已应用的迁移
迁移一旦应用到生产环境,请勿修改。如需进一步变更,请创建新迁移。
命令参考
| 命令 | 用途 |
|---|---|
pnpm drizzle:generate | 根据 schema 差异生成迁移 |
pnpm drizzle:migrate | 应用待执行迁移 |
pnpm drizzle:push | 直接推送 schema(跳过迁移;仅开发) |
pnpm drizzle:studio | 打开 Drizzle Studio 可视化查看数据库 |
drizzle:push 与 drizzle:migrate 的选择
| 方式 | 适用场景 |
|---|---|
| drizzle:migrate | 生产、团队协作、版本控制的 schema 变更 |
| drizzle:push | 本地原型、快速 schema 迭代;无迁移历史 |
生产部署请始终使用 drizzle:migrate 并提交迁移文件。
配置
迁移使用与应用相同的连接。运行前请确保已设置 DATABASE_URL(或 Cloudflare 的 Hyperdrive):
# .env
DATABASE_URL="postgresql://user:pass@host:5432/dbname"drizzle.config.ts 中的 Drizzle 配置从 DATABASE_URL 读取,并将迁移输出到 ./src/backend/database/migrations。