恢复QScored公共数据集后PostgreSQL表连接报错的解决问询
解决PostgreSQL表连接时列未定义的错误
问题根源在于PostgreSQL的列名大小写规则:
PostgreSQL默认会把未用双引号包裹的标识符(表名、列名)自动转为小写,但如果你的表列创建时包含大写字母(比如Project_id),且创建过程中用双引号声明了这个列名,那么查询时必须用双引号包裹列名才能匹配到实际存在的列。
即时修复方案
修改SQL语句,给列名加上双引号,保持大小写完全一致:
select * from class_metric join method_metric on "class_metric"."Project_id" = "method_metric"."Project_id"
避免后续同类问题的方案
如果不想每次查询都手动加双引号,可以将列名统一改为全小写:
-- 修改class_metric表的列名 ALTER TABLE class_metric RENAME COLUMN "Project_id" TO project_id; -- 修改method_metric表的列名 ALTER TABLE method_metric RENAME COLUMN "Project_id" TO project_id;
修改完成后,你最初写的SQL语句就能正常执行。
验证列名的步骤
可以先确认表的实际列结构:
- 在pgAdmin中,找到对应表,右键选择「列」标签,查看列名的准确大小写;
- 或在psql命令行中执行
\d class_metric,查看列名信息。
内容的提问来源于stack exchange,提问作者Hiba Moneer
相关产品推荐
相关产品推荐

