为什么 `\dt` 在数据库下不显示任何 table?

why does `\dt` not show any table under a database?

$ 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 下显示任何 table,即使在我创建了一个新的 table student 之后我在 table?

中插入一条记录

谢谢。

密切注意提示:

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

请注意,它以 =# 开头,然后变为 -#-#提示的意思是"I'm waiting for you to complete a statement"。然后,如果我们查看您的 createinsert "statements",我们会注意到 它们没有以分号结尾,因此它们不会进入数据库。 \... 命令直接由 psql 执行,因此它们不需要分号终止符,它们会在您点击 return[ 时立即执行=34=](如果你有那些键盘之一,则输入)。

# 表示您是数据库的 "root" 用户,非根用户获得 > 以及 -> 和 [=如果没有 # 中的所有额外行,21=] 更容易看到。)

我发现这有帮助:

\dt+ *

仅显示 pg_catalog

中的表和名称

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

select * from pg_catalog.pg_tables;

然后查看我的表及其架构前缀,我可以像这样再次显示我的表:

\dt+ <the_schema_name>.*