Postgres - 未找到任何关系
Posted
技术标签:
【中文标题】Postgres - 未找到任何关系【英文标题】:Postrgresql - No Relations Found 【发布时间】:2018-01-03 09:52:09 【问题描述】:我还是 psql 的新手,我偶然发现了一个问题。
我有一个用户 admin,我已授予他对数据库 mywebsite
的所有权限 List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+-------------+-------------+-----------------------
mywebsite | postgres | UTF8 | en_PH.UTF-8 | en_PH.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | admin=CTc/postgres
postgres | postgres | UTF8 | en_PH.UTF-8 | en_PH.UTF-8 |
template0 | postgres | UTF8 | en_PH.UTF-8 | en_PH.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_PH.UTF-8 | en_PH.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
这是角色列表
mywebsite=# \du
admin | |
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS |
mywebsite=# \dn+
public | postgres | postgres=UC/postgres+| standard public schema
| | =UC/postgres |
mywebsite=# \d
No relations found.|
我尝试检查数据库是否为空
mywebsite=# select count(*)
mywebsite-# from pg_class c
mywebsite-# join pg_namespace s on s.oid = c.relnamespace
mywebsite-# where s.nspname not in ('pg_catalog', 'information_schema')
mywebsite-# and s.nspname not like 'pg_temp%'
mywebsite-# ;
count
-------
36
(1 row)
这会计算不是默认 Postgres 表的表数。
所以我不知道为什么它会输出“No Relations found”
【问题讨论】:
【参考方案1】:这会计算不是默认 Postgres 表的表数。
肯定不是。您忘记了 TOAST 表。我在全新安装的 10.1 中获得了 40。
但这应该计算表、序列和其他一些关系的数量:
select count(*)
from pg_class c
join pg_namespace s on s.oid = c.relnamespace
where s.nspname not in ('pg_catalog', 'information_schema', 'pg_toast')
and s.nspname not like 'pg_temp%'
【讨论】:
以上是关于Postgres - 未找到任何关系的主要内容,如果未能解决你的问题,请参考以下文章
带有“%%”参数的 Postgres 查询未通过 psycopg2 返回结果