psql 说数据库不存在但它确实存在于 pgadmin

Posted

技术标签:

【中文标题】psql 说数据库不存在但它确实存在于 pgadmin【英文标题】:psql saying database does not exist but it does exist in pgadmin 【发布时间】:2018-12-05 18:43:21 【问题描述】:

我刚刚在 Windows 上安装了 Postgres v10.4,并使用 pgadmin 创建了一个名为 analysis 的新数据库。它就在那里,我可以在 pgadmin 中看到它,并且它有一张表。但是,我无法使用 psql 连接到该数据库。

C:\WINDOWS\system32>psql -d postgres -U postgres
psql (10.4)
WARNING: Console code page (850) differs from Windows code page (1252)
         8-bit characters might not work correctly. See psql reference
         page "Notes for Windows users" for details.
Type "help" for help.

postgres=# l
postgres-# \l
                                                  List of databases
   Name    |  Owner   | Encoding |           Collate           |            Ctype            |   Access privileges
-----------+----------+----------+-----------------------------+-----------------------------+-----------------------
 postgres  | postgres | UTF8     | English_United Kingdom.1252 | English_United Kingdom.1252 |
 template0 | postgres | UTF8     | English_United Kingdom.1252 | English_United Kingdom.1252 | =c/postgres          +
           |          |          |                             |                             | postgres=CTc/postgres
 template1 | postgres | UTF8     | English_United Kingdom.1252 | English_United Kingdom.1252 | =c/postgres          +
           |          |          |                             |                             | postgres=CTc/postgres
(3 rows)


postgres-# \q

C:\WINDOWS\system32>psql -d analysis -U postgres
psql: FATAL:  database "analysis" does not exist

C:\WINDOWS\system32>

我不知道我在用 psql 做什么,但我发现我可以作为用户 postgres 连接到 db postgres。有一个\l 命令,它显示了 3 个数据库(其中 2 个,template0 和 template1),我什至在 pgadmin 中都看不到。

如何连接到我刚刚在 pgadmin 中创建的数据库(分析)?谁能解释我在 pgadmin 中登录的用户,如果它与“postgres”不同,如果不是,我怎么在 psql 中看不到我在 pgadmin 中看到的内容?

【问题讨论】:

正如其他人所说,您可能正在连接到不同的本地集群。当我安装了两个不同版本的 postgres 时,这发生在我身上。尝试在命令提示符下运行 pg_lsclusters 并发布输出。 你的意思是在 windows cmd 行运行 pg_lsclusters 吗?它无法识别该命令。 【参考方案1】:

template0 和 template1 被称为骨架数据库。当您使用 CREATE DATABASE 命令 postgres 复制现有数据库。 默认使用 template1 数据库创建新数据库。

我认为您的 pgadmin 和 psql 连接到不同的集群。 postgresql 中的集群是单个服务器实例中一个或多个数据库的集合

您发布的图片未显示 pgadmin 浏览器的完整视图。但 如果有 2 个集群,那么您可以在 pgadmin 中看到类似“Servers(2)”的信息。要查找每个集群的运行端口,请右键单击相应的集群并选择属性,然后单击连接选项卡。这里可以看到端口号。 然后使用该端口连接到 psql 中的集群。

【讨论】:

谢谢。我以前从 non-enterprisedb 位置安装了 postgres。我没有卸载它只是因为它似乎与 enterprisedb 融合了。

以上是关于psql 说数据库不存在但它确实存在于 pgadmin的主要内容,如果未能解决你的问题,请参考以下文章

npm 模块不会在没有此类文件的情况下执行,但它确实存在

psql:致命:数据库“<用户>”不存在

Cpanel 不显示数据库,但它确实存在

Docker build 说目录已经存在但它不存在

PostgreSQL“列不存在”但它确实存在

Swift:URLSessionDownload 文件说它存在但它不存在?