代码之家  ›  专栏  ›  技术社区  ›  Tim unnamed eng

为什么“\dt”不显示数据库下的任何表?

  •  3
  • Tim unnamed eng  · 技术社区  · 7 年前
    $ sudo -u postgres psql
    postgres=# \c students
    You are now connected to database "students" as user "postgres".
    students=# create table student(name char(30), gender char(30), birthday date)
    students-# \dt
    No relations found.
    students-# insert into student value ('Tom', 'male', '11-21-2000')
    students-# \dt
    No relations found.
    

    我想知道为什么 \dt 不显示数据库下的任何表 students ,即使在创建新表之后 student 在我向表中插入一条记录之后呢?

    谢谢

    2 回复  |  直到 7 年前
        1
  •  6
  •   mu is too short    7 年前

    请密切注意提示:

    students=# create ...
    students-# \dt
    No relations found.
    students-# insert ...
    students-# \dt
    No relations found.
    

    请注意,它开始于 =# 然后变成 -# . 这个 -# 提示的意思是“我在等你完成一份声明”。如果我们看看你的 create insert “声明”,我们会注意到 它们没有以分号结尾,因此无法访问数据库。 这个 \... 命令由直接执行 psql 所以他们不需要分号终止符,只要你点击 回来 (或 进来 如果你有 那些 键盘)。

    (The # 表示您是数据库的“root”用户,非root用户 > 以及 -> => 如果没有所有额外的线条,就更容易看到 # .)

        2
  •  3
  •   C.J.    4 年前

    我发现这很有帮助:

    \dt+ *
    

    仅显示pg\U目录中的表和名称

    我还发现这将显示该数据库中的所有表:

    select * from pg_catalog.pg_tables;
    

    然后查看我的表及其模式前缀,我可以再次显示我的表,如下所示:

    \dt+ <the_schema_name>.*