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

PostgreSQL代码查询报错:列不存在,但psql CLI可正常执行

解决方案

问题根源是PostgreSQL的双引号标识符规则理解错误,以下是具体分析和修正方案:

核心问题

PostgreSQL中,双引号包裹的内容会被视为单个完整的标识符:

  • 你写的"paraglider.idMaker"会被识别为名为paraglider.idMaker的列,而非paraglider表下的idMaker列,这直接导致了"column does not exist"报错;
  • 后续修改的"maker.id"同理,会被当成一个列名,而非maker表的id列。

修正后的查询语句

将表名和列名分别用双引号包裹(驼峰命名的列必须用双引号保留大小写,小写表名可省略双引号),同时修正原代码中maker.is的笔误(应为maker.id):

const result = await client.query(`
  SELECT paraglider.*, 
         maker.id AS maker_id, 
         maker.name AS maker_name 
  FROM "paraglider" 
  JOIN maker ON "paraglider"."idMaker" = maker.id
`);

为什么psql中的语句能正常运行?

你在psql里的写法符合规则:

  • "idMaker"明确指定了驼峰命名的列(必须用双引号保留大小写);
  • maker.id未加双引号,PostgreSQL会自动解析为maker表的id列(小写表名创建时未加双引号,PostgreSQL默认转为小写,无需额外包裹)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:26