为什么psql无法找到已存在的表的关系名称?

61
这是我的当前状态。
Eonil=# \d+
                       List of relations
 Schema |    Name    | Type  | Owner |    Size    | Description 
--------+------------+-------+-------+------------+-------------
 public | TestTable1 | table | Eonil | 8192 bytes | 
(1 row)

Eonil=# \d+ TestTable1
Did not find any relation named "TestTable1".
Eonil=# 

什么是问题,如何查看表定义?

请参考以下帖子:https://dev59.com/IlgR5IYBdhLWcg3wyv5c - Nguyen Quoc Tinh
1个回答

107
Eonil=# \d+ "TestTable1"

所以这个很好用。

Eonil=# \d+ "TestTable1"
                   Table "public.TestTable1"
 Column |       Type       | Modifiers | Storage  | Description 
--------+------------------+-----------+----------+-------------
 ID     | bigint           | not null  | plain    | 
 name   | text             |           | extended | 
 price  | double precision |           | plain    | 
Indexes:
    "TestTable1_pkey" PRIMARY KEY, btree ("ID")
    "TestTable1_name_key" UNIQUE CONSTRAINT, btree (name)
Has OIDs: no

Eonil=# 

9
在PostgreSQL中,未使用引号的标识符(例如表名和列名)会被转换为小写。请注意,标准规定它们应该大写,因此PostgreSQL在这里是非标准的。如果您需要特定大小写或标识符包含空格,则必须在所有地方将它们用双引号引起来。建议在PostgreSQL中使用用下划线分隔单词的小写标识符,这样就不必担心引号或大小写问题了。 - mu is too short
感谢您的解释。无论如何,作为一个应用程序员而不是专业的数据库管理员,我喜欢这种明确的行为,如果在这些小差异上出现错误,那就更好了。 - eonil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接