You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS+Prisma+MySQL:生产环境仅单表查询接口可用求助

Vercel生产环境NextJS+Prisma接口500问题排查

问题背景

在Vercel生产环境中,仅/api/users接口可正常访问,复制该逻辑编写的/api/posts接口返回500内部错误。本地环境所有接口运行正常,MySQL数据库表及数据均正常,已完成最新Prisma迁移操作。

相关代码片段

正常运行的/api/users代码

import { PrismaClient } from "@prisma/client";

export default async function handler(req, res) {
  const prisma = new PrismaClient();
  const users = await prisma.user.findMany();
  return res.send(users);
}

报错的/api/posts代码

import { PrismaClient } from "@prisma/client";

export default async function handler(req, res) {
  const prisma = new PrismaClient();
  const users = await prisma.post.findMany();
  return res.send(users);
}

schema.prisma配置

// This is your Prisma schema file,
// learn more about it in the docs: https://pris.ly/d/prisma-schema

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
  shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
}

model User {
  id Int @id @default(autoincrement())
  email String @db.VarChar(255)
  password String @db.VarChar(255)
  firstName String @db.VarChar(255) @map("first_name")
  lastName String @db.VarChar(255) @map("last_name")
}

model Post {
  id Int @id @default(autoincrement())
  title String @db.VarChar(255)
  description String @db.VarChar(255)
  order Int @default(10)
}

排查方向及解决方案

1. 确保Prisma Client已重新生成并部署

本地修改schema.prisma添加Post模型后,必须执行npx prisma generate生成包含Post模型的Prisma Client。同时需保证Vercel构建阶段自动执行该命令:

  • 修改package.json的build脚本:
    "scripts": {
      "build": "prisma generate && next build",
      // 保留其他原有脚本
    }
    
  • 若已配置,在Vercel控制台手动触发重新部署,并勾选「清除缓存重新部署」,避免旧构建产物被缓存。

2. 检查Vercel环境变量与数据库权限

  • 确认Vercel项目中DATABASE_URL配置正确,且该URL对应的数据库用户拥有posts表的SELECT权限。
  • 若使用了SHADOW_DATABASE_URL,需确认该变量在Vercel环境中也已正确配置(即使迁移完成,生产环境Prisma仍可能验证相关配置)。

3. 修正代码中的笔误

/api/posts代码中存在变量名不规范问题(虽不直接导致500,但会混淆日志排查):

// 修正变量名为posts
const posts = await prisma.post.findMany();
return res.send(posts);

4. 查看Vercel函数日志

在Vercel控制台的「Functions」页面找到/api/posts函数,查看具体错误日志。日志会明确给出500错误的根源(比如Prisma Client找不到post模型、数据库连接权限不足等),这是定位问题最直接的方式。

内容的提问来源于stack exchange,提问作者SJ19

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:50:25