【问题标题】:Why command \dt gives - no relations found?为什么命令 \dt 给出 - 没有找到关系?
【发布时间】:2017-04-13 10:19:44
【问题描述】:

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

在 postgresql 中是否有替代 SHOW TABLE 的方法?

找不到解决方案here

我从 - \dt *.* 获得结果。

【问题讨论】:

标签: postgresql


【解决方案1】:

这不是您的search_path 的问题,它可能是您的架构权限的问题,如in the answer here 所述。检查\dn+ public 架构是否指示postgres 角色的权限,如果没有,则授予它们:GRANT ALL ON SCHEMA public TO public;

【讨论】:

    【解决方案2】:

    如果您在不同端口的服务器上运行不同的 postgres 实例,当您使用特定端口 psql -p 5432 数据库名称(或 psql -p 5433 数据库名称等)连接到数据库时,它会有所帮助

    【讨论】:

      【解决方案3】:

      你一定没有在末尾添加分号,这就是我经常发生的事情我总是忘记我的分号 -> 创建表 nameoftable()

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

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

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

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

          假设表存在,它会告诉你它所在的架构。然后你可以用 SELECT * FROM .;. 查询。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-03-27
            • 2017-03-14
            • 2012-12-20
            • 2017-04-29
            • 2019-09-21
            • 2018-02-18
            • 1970-01-01
            相关资源
            最近更新 更多