错误:关系列不存在 PostgreSQL,无法运行插入查询

Posted

技术标签:

【中文标题】错误:关系列不存在 PostgreSQL,无法运行插入查询【英文标题】:ERROR: column of relation does not exist PostgreSQL ,Unable to run insert query 【发布时间】:2015-09-13 08:18:57 【问题描述】:

您好,我正在尝试将 tester3 插入表中,当我使用语法时它失败了

insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');

但是

insert into tester3 values ( 1, 'jishnu1');

工作正常。

mydb=# CREATE TABLE tester3
mydb-#    (
mydb(#     "UN0" integer,
mydb(#     "UN1" VARCHAR(40)
mydb(#    );
CREATE TABLE
mydb=# insert into tester3 (UN0, UN1) values ( 1, 'jishnu1');
ERROR:  column "un0" of relation "tester3" does not exist
mydb=# \d tester3
           Table "public.tester3"
 Column |         Type          | Modifiers
--------+-----------------------+-----------
 UN0    | integer               |
 UN1    | character varying(40) |

我想我遗漏了一些非常微不足道的东西,我尝试了其他一些列名,其中一些可以正常工作,而有些则无法正常工作。我很迷惑。 PostgreSQL 对插入查询的第一种语法适用的列名有限制吗?


编辑:

检查 Girdon Linoff 的答案,正如 Frank Heikens 指出的其他列名,这些列名在小写中没有引号。

小写列是 PostgreSQL 中的标准列,也可以不加引号

【问题讨论】:

您可以在此处找到有关标识符名称的详细信息:postgresql.org/docs/current/static/sql-syntax-lexical.html 对您的问题非常有用。 ***.com/questions/7651417/… 【参考方案1】:

我的 Qgis + POSTGRES DATA 数据库有我的故事 我尝试使用 Navicate 的代码更新我的表格 UPDATE "MangLuoi"."A_Lam_D310" SET "MangLuoi"."A_Lam_D310"."Nguon"='Lâm' 和错误: SQL]UPDATE "MangLuoi"."A_Lam_D310" SET "MangLuoi"."A_Lam_D310"."Nguon"='Lâm'

[Err] 错误:关系“A_Lam_D310”的列“MangLuoi”不存在 第 1 行:更新 "MangLuoi"."A_Lam_D310" SET "MangLuoi"."A_Lam_D310"."...

现在我试试 UPDATE "MangLuoi"."A_Lam_D310" SET "Nguon"='Lâm'

IT 显示正常 :)) 通过留言: 时间:0.035s

受影响的行数:29

感谢分享和回答。

【讨论】:

这个答案很难阅读。请参阅 *** 的 Style guide。【参考方案2】:

如果用双引号定义列,那么在引用列时一般需要使用:

insert into tester3 ("UN0", "UN1")
     values ( 1, 'jishnu1');

我建议您删除 CREATE TABLE 语句中列名中的双引号。

如果名称全部小写,则不需要双引号。

【讨论】:

奇怪,表格的描述没有显示双引号。但是,是的,这似乎是正确的答案。 现在我很困惑,我创建了 "column0" 整数,"column1" VARCHAR(40) 它在没有引号的情况下工作 @JishnuPrathap:都是小写字母,这是 PostgreSQL 中的标准,也可以不加引号。 @JishnuPrathap 您将这些列显式创建为大写,但后来以不区分大小写的方式查询它们,因此找不到它们。当您将名称放在引号中时,查找将区分大小写。 @Unglückspilz 你应该把它作为答案,因为这是一般问题核心:)【参考方案3】:

尝试在列名中使用双引号

insert into tester3 ("UN0", "UN1") values ( 1, 'jishnu1');

【讨论】:

以上是关于错误:关系列不存在 PostgreSQL,无法运行插入查询的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL“列不存在”但它确实存在

PGError:错误:关系列不存在

PostgreSQL:在 WHERE 子句中搜索时列不存在

如果列不存在,则无法添加?

选择多列时出现 ExecuteReader 错误“行/列不存在数据”

Postgresql 错误:关系不存在