所以我以编程方式制作了一些表格,我想验证它的结构是我认为的。
>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".
等一下?!没有测试只是出现在“关系列表”下?这是怎么回事?
答案 0 :(得分:30)
默认情况下,PostgreSQL将不带引号的标识符(例如表名和列名)转换为小写;标准说标识符应该被标准化为大写,但这在这里并不重要。所以,当你这样说时:
\d Test
PostgreSQL认为与\d test
相同。您可能有一个使用引用名称创建的表:
create table "Test" ( ...
使其名称区分大小写,并且每次引用时都必须引用(带双引号)。所以试着引用这个名字:
\d "Test"