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