当前位置: 首页 > 面试题库 >

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

郎星汉
2023-03-14
问题内容

嗨,我尝试插入表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的答案,正如FrankHeikens指出的那样,其他的列名在没有小写的情况下也没有引号。

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


问题答案:

如果用双引号定义列,那么在引用该列时通常需要使用它们:

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

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

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



 类似资料:
  • 问题内容: 我在使用PostgreSQL 9.3和使用qoutes创建的表时遇到了一个奇怪的问题。例如,如果我使用qoutes创建表: 该表已正确创建,在pgAdminIII的SQL窗格中查看该引号时,可以看到保留了引号。但是,当我查询数据库以查找所有可用表的列表时(使用下面的查询),我看到结果不包含表名的引号。 由于该表是用引号创建的,因此我无法直接使用上述查询返回的表名,因为该表名未加引号,并

  • 我在列名方面也遇到了同样的问题,但我希望如果我能找到一个解决表名问题的方法,那么类似的方法也能适用于列名。

  • 我正在学习postgresql,并用elephantsql制作这个表格: 但当我尝试插入到: 它返回:

  • 问题内容: 我收到这个奇怪的错误 我如何从中恢复?有任何想法吗 ? 谢谢 问题答案: 您丢失了与表1684和数据库17369相关的文件。在目录base / 17369中检查名称为1684的状态文件。 您可以确定它是哪个表: 1)获取数据库名称: 2)获取表名(连接到受影响的数据库): 可能没有更多可以做的事情了。仅从备份还原。

  • 问题内容: 我在尝试使用PostgreSQL和Hibernate时遇到一些问题,更具体地说,是标题中提到的问题。我已经在网上搜索了几个小时,但没有找到适合我的解决方案。 我正在为Web开发人员使用Eclipse Java EE IDE。在Ubuntu 9.10上使用HibernateTools,Hibernate 3,PostgreSQL 8.4.3构建ID:20090920-1017 以下是相关

  • 由于一些奇怪的原因,hibernate生成的查询不适用于postgres,它告诉它无法找到关系/表,即使在架构中有有效的表?这个答案没有帮助。 例外情况: HQL公司 生成SQL 此查询工作正常: 基于胶片实体注释的映射: 解决方案/黑客: 评论后,问题消失了。