psql:尽管存在关系,但没有找到关系

Posted

技术标签:

【中文标题】psql:尽管存在关系,但没有找到关系【英文标题】:psql: no relations found despite existing relations 【发布时间】:2013-07-08 19:43:21 【问题描述】:

版本 8.4.16(版本没有选择)。

我按如下方式登录我的数据库:

psql -d JRuser

得到的提示是:

JRuser=>

我做 \d 或 \dt 期望看到架构“翻译”中所有关系的列表

No relations found. 

但我可以从架构中的任何表中进行选择,而不会出现任何问题。例如:

select * from translate.storage; --works fine

我已经通过 \dn+:

确保了 JRuser 的访问权限是正确的
                                 List of schemas
        Name        |  Owner   |  Access privileges   |           Description  
translate           | JRuser   | JRuser=UC/JRuser     | 
                               : postgres=UC/JRuser     

为什么我看不到翻译架构中的表?

【问题讨论】:

我觉得你需要使用\dt translation.* 我当然可以做到这一点,但直到今天我已经能够做到 \d 或 \d 没有任何限定符。我没有更改任何配置设置,所以我很困惑。 【参考方案1】:

\d 在 psql 中仅显示 可见 表,即在您的 search_path 中。

试试看:

SHOW search_path;
SET search_path= translate;
\d

您的会话设置可能已以某种方式更改。有多种方法可以做到这一点:

How does the search_path influence identifier resolution and the "current schema"

后面关于 dba.SE 的相关问题:

Why can't I see my table (PostgreSQL) when I use \dt(+) inside psql?

【讨论】:

如果用户希望能够在所有模式上显示表,search_path 变量是否可以包含多个模式? @lostinthebits:见这里:postgresql.org/docs/8.4/static/sql-set.html#AEN65998 更改 search_path 很繁琐,但对于 shell 命令查找新数据库的关系来说是必要的。这是关于路径值需要是什么的更详细的答案:***.com/questions/9067335/…

以上是关于psql:尽管存在关系,但没有找到关系的主要内容,如果未能解决你的问题,请参考以下文章

尽管设置了 rpath,但没有找到一个 dll

如何找到损坏的“外键”关系的等价物?

django python - 关系不存在

JavaScript 关系比较运算符如何强制类型?

Postgres - 未找到任何关系

为啥 psql 找不到现有表的关系名称?