如何在Vercel界面查询Prisma创建的Postgres数据库?
问题:Prisma创建的表在Vercel界面查询提示关系不存在,API却能正常工作
核心原因
Prisma默认遵循一套命名转换规则:它会把你定义的大驼峰模型名,自动转换为蛇形复数格式作为数据库实际表名。比如你代码里的Story模型,对应到数据库中的表名是stories,而不是你尝试的Story或story。
解决方法
- 直接使用正确的表名查询
在Vercel界面执行SQL时,改用实际的表名:
SELECT * FROM stories;
- 自定义表名(可选)
如果不想用默认的复数表名,可以在模型上通过@@map指令指定自定义表名,比如强制使用单数story:
model Story { id String @id @default(cuid()) title String @unique tags String[] category String created_by String private Boolean @default(true) rate String content Bytes Category Category @relation(fields: [category], references: [id]) Creator User @relation(fields: [created_by], references: [id]) @@map("story") // 自定义表名为story }
修改后重新运行迁移,之后不管用Prisma API还是直接SQL查询,都可以用story作为表名。
补充说明
Prisma的API(比如prisma.story.findAll)是基于你定义的模型名来封装操作的,它内部会自动处理模型名到数据库表名的映射,所以你不需要手动转换格式,这也是为什么API能正常工作的原因。
内容的提问来源于stack exchange,提问作者stairwaytoeve
相关产品推荐
相关产品推荐

