一些PostgreSQL数据库无法通过Navicat或pgAdmin等客户端看到

4
当我使用pgAdmin或Navicat登录以查看我的远程PostgreSQL数据库时,我可以连接而没有任何问题,列表下面的前三个数据库也正常显示。但由于某种原因,我无法让最后两个数据库(“template0”和“template1”)与其他数据库一起显示。此外,当我通过ssh登录到服务器的数据库时,我可以运行“SELECT * FROM a_table_in_template1_database;”,并且它可以无误地显示出表中的所有内容,所以我知道数据库和其中的表一切都正常。我该如何使“template1”数据库在此列表中显示并正常工作?以下是我在终端上运行“\list”时PostgreSQL的输出:
template1=# \list
                                List of databases
     Name      |  Owner   | Encoding | Collation | Ctype |   Access privileges   
---------------+----------+----------+-----------+-------+-----------------------
 mygigline     | jball037 | LATIN1   | en_US     | en_US | 
 mygiglinemain | postgres | LATIN1   | en_US     | en_US | 
 postgres      | postgres | LATIN1   | en_US     | en_US | 
 template0     | postgres | LATIN1   | en_US     | en_US | =c/postgres
 template1     | postgres | LATIN1   | en_US     | en_US | =CTc/postgres
                                                         : postgres=CTc/postgres
(5 rows)

似乎是“访问权限”引起了这个问题,但我已经执行了“GRANT ALL ON DATABASE template1 TO postgres”等操作,但这看起来并没有帮助。
另一个有用的信息是:当我使用Navicat登录并显示三个数据库时,我可以点击“打开数据库”选项,然后输入“template1”,它将显示在左侧面板上,与其他三个数据库一起,但我无法单击它或对其进行任何操作。
我只想能够在Navicat或pgAdmin中显示所有5个数据库,并能够访问它们 :) 任何帮助都将不胜感激!
1个回答

3
这些工具倾向于隐藏 pg_database.datistemplatetrue 的数据库,因为它们被认为是“内部”数据库,而不是普通用户数据库。

客户端应用程序可能提供了一个设置来取消隐藏这些数据库,或者您可以直接通过名称打开它们。

请注意,template0 通常是一个只读数据库,您无法修改它,因此在管理 UI 中访问它没有什么意义。您可以连接和修改 template1,但是当您创建一个新数据库(没有显式的 TEMPLATE 选项)时,对 template1 进行的任何更改都将被复制,因此通常不希望更改它。

我强烈建议您忽略 template0template1。假装它们不存在。


太好了,很高兴知道你已经开始使用其他数据库了。谢谢! - jball037

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接