sql - Prisma PostgreSQL查询原始错误代码42P01表不存在

标签 sql reactjs postgresql next.js prisma

我正在尝试运行一个查询,根据标题和描述与值的相似程度来搜索项目表中的项目,查询如下:

let items = await prisma.$queryRaw`SELECT * FROM item WHERE SIMILARITY(name, ${search}) > 0.4 OR SIMILARITY(description, ${search}) > 0.4;`

但是,当运行代码时,我收到以下错误:

error - PrismaClientKnownRequestError: 
Invalid `prisma.$queryRaw()` invocation:


Raw query failed. Code: `42P01`. Message: `table "item" does not exist`
  code: 'P2010',
  clientVersion: '4.3.1',
  meta: { code: '42P01', message: 'table "item" does not exist' },
  page: '/api/marketplace/search'
}

我还运行了以下查询:

let tables = await prisma.$queryRaw`SELECT * FROM pg_catalog.pg_tables;`

这正确地表明 Item 表存在!错误在哪里?

最佳答案

经过一些简单的研究后,看起来您可能需要双引号。尝试一下

let items = await prisma.$queryRaw`SELECT * FROM "Item" ... blah blah

我这么说是因为 PostgreSQL 表名和列在不加双引号时默认为小写。如果您还没有构建太多数据库,那么将所有表和列设置为小写可能是值得的,这样您就不必不断添加双引号和转义字符。

引用文献:

关于sql - Prisma PostgreSQL查询原始错误代码42P01表不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73693136/

相关文章:

c# - Npgsql for c# 如何访问表脚本、 View 、外键和主键并将它们编写出来

sql - 行尾有“^M”字符

sql - SequelizeDatabaseError : SQLITE_ERROR: no such column: created_at

sql - 找不到对称 key '' ,因为它不存在或您没有权限

javascript - 我想在 react 中创建一个倒计时 watch ,用户在其中输入输入,可能在几秒钟内输入,然后它下降到 0

javascript - React 自定义组件未按预期呈现

arrays - PostgreSQL - 如何获取列列表中的元素数

mysql - SQL SELECT ... INTO 简介 - 为什么它不运行?

javascript - React.js 无法读取我的状态

java - RESTful 服务的时间戳精度问题