为什么命令\ dt给出 - 没有找到关系?

Sp1*_*Sp1 19 postgresql

我在postgres中创建了一个数据库.它有3个空表.该表有用户tom作为其Superuser一起root.我登录tom并连接到mydb数据库.但仍然是命令\d\dt- 给no relations found.

SHOW TABLE在postgresql中有替代品吗?

在这里找不到解决方案

我得到的结果 - \dt *.*.

s3c*_*s3c 13

您可能没有连接到正确的数据库。

第一个命令\c DATABASE_NAME来自 Reddit 上的以下评论,对我来说很有效。

确保您使用 \c 连接到正确的数据库。使用 \l 将列出所有数据库,无论您连接到哪个数据库,但大多数命令特定于连接的数据库。

使用 \dt * 列出所有模式中名称匹配的所有表。

假设该表存在,它会告诉您它所在的模式。然后您可以使用 SELECT * FROM .; 进行查询。

如果您想避免显式指定架构名称,请确保包含该表的架构位于您的路径中: SHOW search_path 和 SET search_path 。


小智 8

我通过使用双引号(例如 \d "Table_name")解决了我的问题。因为我的表名像 Foo, Bar 一样大写。希望可以帮助别人。


Hor*_*Kid 7

这不是您的问题search_path,这可能是您的架构权限存在的问题,如此处答案所述。检查\dn+public架构是否指示该postgres角色的权限,如果没有,请向其授予以下权限:GRANT ALL ON SCHEMA public TO public;