MuseMVP 文档
数据库

数据库迁移

使用 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)。
  • Journalmeta/_journal.json 记录迁移顺序与元数据。

勿修改已应用的迁移

迁移一旦应用到生产环境,请勿修改。如需进一步变更,请创建新迁移。


命令参考

命令用途
pnpm drizzle:generate根据 schema 差异生成迁移
pnpm drizzle:migrate应用待执行迁移
pnpm drizzle:push直接推送 schema(跳过迁移;仅开发)
pnpm drizzle:studio打开 Drizzle Studio 可视化查看数据库

drizzle:pushdrizzle: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