当我用pgAdmin或Navicatlogin来查看远程PostgreSQL数据库时,我可以无任何问题地连接,并且下面列表中的前三个数据库显示正常。 但由于某种原因,我无法得到最后两个数据库(“template0”和“template1”)与其他人一起出现。 另外,当我进入服务器的数据库,我可以运行“SELECT * FROM a_table_in_template1_database;” 它显示表中的所有内容没有问题,所以我知道一切都可以与数据库及其中的表。 我怎样才能让“template1”数据库显示在这个列表中,并工作? 这是PostgreSQL的运行“\ list”时terminal的输出:
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)
它看起来像可能有什么与“访问权限”是造成这一点。 但是,我已经做了像“授予所有数据库模板1 postgres”,但似乎没有帮助。
另一个有用的信息:当我用Navicatlogin和三个数据库显示,我可以点击选项“打开数据库”,然后我input“template1”,它会显示在左侧面板上其他三个数据库,但我不能点击它或做任何事情。
我只是想能够显示我的数据库显示在Navicat或pgAdmin的所有5个,并能够访问所有的人:)任何帮助将不胜感激!
这些工具倾向于隐藏pg_database.datistemplate
为true
数据库,因为它们被认为是“内部”数据库而不是普通用户数据库。
客户端应用程序可能会提供一个设置来取消隐藏这些数据库,或者您可以直接按名称打开它们。
请注意, template0
通常是只读数据库,您无法修改,因此在管理界面中访问它几乎没有意义。 template1
可以被连接和修改,但是当你创建一个新的数据库(没有明确的TEMPLATE
选项)时,你对template1
任何操作都将被复制,所以你通常不想改变它。
我强烈建议您忽略template0
和template1
。 假装他们不存在。