如何在Vercel中为多个Next.js项目共用一个数据库?
解决方案:共享Vercel免费数据库给多个Next.js项目
核心问题分析
- 第二个项目部署后未执行Prisma迁移,数据库仅存在第一个项目的表结构,导致访问报错
- 两个项目的Prisma Schema未同步,或数据库连接配置存在问题
具体解决步骤
1. 同步两个项目的Prisma Schema
合并两个项目的模型定义到同一个prisma/schema.prisma文件,确保包含所有需要的表结构,示例:
// 第一个项目的模型 model Post { id Int @id @default(autoincrement()) title String content String? createdAt DateTime @default(now()) } // 第二个项目的模型 model Product { id Int @id @default(autoincrement()) name String description String? price Float }
2. 配置第二个项目的数据库连接
在第二个项目的Vercel环境变量中,将DATABASE_URL设置为第一个项目的PostgreSQL连接字符串(直接从第一个项目的Vercel环境变量面板复制)。
3. 在部署流程中添加Prisma迁移命令
修改第二个项目的package.json,在构建命令前加入迁移指令:
{ "scripts": { "build": "prisma migrate deploy && next build", "dev": "prisma migrate dev && next dev" } }
说明:
prisma migrate deploy用于生产环境,自动执行所有未应用的迁移;开发环境使用prisma migrate dev。
4. 重新部署第二个项目
在Vercel控制台手动触发第二个项目的重新部署,确保构建阶段成功执行迁移命令,数据库会自动创建第二个项目所需的表。
额外注意事项
- 若两个项目存在同名模型且结构不一致,需先调整Schema避免冲突
- Vercel免费数据库有资源限额,共享后需控制两个项目的总请求量,避免超出限制
内容的提问来源于stack exchange,提问作者Kada Guetouache
相关产品推荐
相关产品推荐

