为什么我看不到表的列名?

时间:2011-10-26 23:32:37

标签: postgresql

所以我以编程方式制作了一些表格,我想验证它的结构是我认为的。

>Rocko=# \c Rocko
Password for user Rocko:
psql (8.4.4, server 8.4.8)
You are now connected to database "Rocko".
Rocko=# \d
            List of relations
 Schema |     Name     |   Type   | Owner
--------+--------------+----------+-------
 public | Email        | table    | Rocko
 public | Email_id_seq | sequence | Rocko
 public | Test         | table    | Rocko
 public | Test_id_seq  | sequence | Rocko
 public | User         | table    | Rocko
 public | User_id_seq  | sequence | Rocko
(6 rows)

所以,例如,我想看看Test中的列。

Rocko=# \d Test

Did not find any relation named "Test".

等一下?!没有测试只是出现在“关系列表”下?这是怎么回事?

1 个答案:

答案 0 :(得分:30)

默认情况下,PostgreSQL将不带引号的标识符(例如表名和列名)转换为小写;标准说标识符应该被标准化为大写,但这在这里并不重要。所以,当你这样说时:

\d Test

PostgreSQL认为与\d test相同。您可能有一个使用引用名称创建的表:

create table "Test" ( ...

使其名称区分大小写,并且每次引用时都必须引用(带双引号)。所以试着引用这个名字:

\d "Test"