为啥 psql 找不到现有表的关系名称?
Posted
技术标签:
【中文标题】为啥 psql 找不到现有表的关系名称?【英文标题】:Why psql can't find relation name for existing table?为什么 psql 找不到现有表的关系名称? 【发布时间】:2013-02-20 16:39:41 【问题描述】:这是我目前的状态。
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=#
有什么问题,如何查看表定义?
【问题讨论】:
关注帖子:***.com/questions/40865564/… 【参考方案1】:Postgres psql 需要对大写字母进行转义。
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=#
【讨论】:
未加引号的标识符(例如表名和列名)在 PostgreSQL 中被折叠为小写,请注意标准规定它们应该大写,因此 PostgreSQL 在这里是非标准的。如果您在特定情况下需要您的标识符,或者如果它们包含空格,那么您必须在任何地方将它们双引号。推荐的做法是在 PostgreSQL 中使用带有下划线分隔的单词的小写标识符,这样您就不必关心引用或大小写问题。 感谢您的解释。无论如何,作为一名应用程序程序员——而不是专业的 DBA——我喜欢这种明确的行为,如果它在这些细微的差异上吐出错误就更好了。以上是关于为啥 psql 找不到现有表的关系名称?的主要内容,如果未能解决你的问题,请参考以下文章
为啥找不到 Swift 4 语言的 Xcode 目标 c 接口标题名称