PostgreSQL插入customer表数据时提示custid列不存在的问题咨询
问题解决:PostgreSQL插入数据提示列不存在
原因分析
PostgreSQL对标识符(表名、列名)的大小写处理规则:
- 若创建表时列名未用双引号
"包裹,PostgreSQL会自动将其转为小写存储,后续查询/插入时不管写大写还是小写都能识别。 - 若创建表时列名是用双引号包裹的(比如
"CustID"),后续所有引用该列的操作都必须用双引号包裹,否则PostgreSQL会将输入的列名转为小写去匹配,就会触发column "custid" does not exist的错误。
解决办法
修改插入语句,将列名用双引号包裹,保持和表结构定义的大小写一致:
INSERT INTO customer ("CustID", "CustName", "Age", "City", "Salary") VALUES (1, 'Ajay', 55, 'Delhi', 52000);
验证步骤
可执行以下语句查看表的列名实际存储状态,确认是否为大小写敏感问题:
SELECT column_name FROM information_schema.columns WHERE table_name = 'customer';
如果查询结果里的列名是CustID(首字母大写),说明创建表时用了双引号,必须用双引号引用;如果是custid,则需重新核对表结构是否与自己的认知一致。
内容的提问来源于stack exchange,提问作者Mayank Kumar Choudhary
相关产品推荐
相关产品推荐

