我已经成功地使用了 Postgres 14,但现在我被难住了。我有一个abc
包含表的数据库和架构。
\c abc
\dt -- shows tables
Run Code Online (Sandbox Code Playgroud)
我创建了一个新的数据库/架构xyz
,但我看不到我创建的表:
\c xyc
\dt
Did not find any relations.
Run Code Online (Sandbox Code Playgroud)
如果我使用 PgAdmin4 我可以看到xyz
的表格。如果我使用 DbVisualizer 我可以看到xyz
的表格。但是,如果我使用psql
我得到的所有内容,那么我是用户还是我自己(也是超级用户)Did not find any relations.
似乎并不重要。我在 PgAdmin4 中创建了这些表。这是一个错误吗?我尝试更改数据库或架构中所有对象的所有者,但无论我尝试什么,如果我使用.postgres
psql
xyz
xyz
psql
不确定这是否有任何启发:
xyz-# \conninfo
You are connected to database "xyz" as user "postgres" via socket in "/tmp" at port "5432".
xyz=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
xyz | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =Tc/postgres +
| | | | | postgres=CTc/postgres
abc | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
Run Code Online (Sandbox Code Playgroud)
我看到了这个答案,它部分解决了我遇到的问题(“关系似乎丢失,因为 Postgres 不会将 search_path 复制到新数据库”)。
也就是说,我可以看到这样的表格:
xyz= \dt xyz.*
Run Code Online (Sandbox Code Playgroud)
但不是这样的:
xyz= \dt
Run Code Online (Sandbox Code Playgroud)
我尝试设置搜索路径,目前:
"$user", public
Run Code Online (Sandbox Code Playgroud)
到:
public, xyz
Run Code Online (Sandbox Code Playgroud)
这是另一种的外观(有效的那种),但设置不固定。
更新 这有效:
xyz=# set search_path to xyz,public;
SET
xyz=# show search_path;
search_path
-------------
xyz, public
(1 row)
xyz=# \dt
List of relations
Schema | Name | Type | Owner
--------+--------------------+-------+---------
xyz | aircraft | table | myname
xyz | pilot_availability | table | myname
xyz | pilots | table | myname
xyz | sorties | table | myname
... | ... | table | myname
Run Code Online (Sandbox Code Playgroud)
不幸的是,似乎设置search_path
不粘。我每次启动时都必须psql
为此xyz
数据库/架构设置它。
但这似乎使设置得以保留:
alter database xyz set search_path = xyz, public;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27419 次 |
最近记录: |