无法连接到正在运行且可访问的PostGIS数据库中的psql

47次阅读
没有评论

问题描述

在安装了qwc-docker之后,尝试连接到创建的PostGIS数据库,但无法成功连接。他在运行psql命令时遇到了错误,虽然数据库正在运行且可访问。
以下是用户的数据库信息:
– 数据库容器名称: qwc-docker_qwc-postgis_1
– 用户名: qwc_service
– 数据库名称: qwc-demo
– 主机: 127.0.0.1
– 端口: 5439

用户尝试了以下两种方式连接数据库,但都遇到了问题:

  1. 运行命令:psql -h 127.0.0.1 -p 5439 -U qwc_service -d qwc-demo
    错误:psql: error: connection to server at "127.0.0.1", port 5439 failed: FATAL: database "qwc-demo" does not exist

  2. 在容器内部运行命令:docker exec f89d540947ca psql -U qwc_service -c "\l"
    错误:psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: database "qwc_service" does not exist

尽管用户确认所有数据库、用户和密码设置与提供的链接相符,但仍然无法连接。用户还检查了可用的数据库列表,发现数据库 “qwc_demo” 存在。

用户的操作系统为Ubuntu 20.10。

解决方案

请在进行以下操作前,确保你已经做好了必要的备份,并了解涉及的风险。

在这种情况下,尽管数据库正在运行且可访问,但连接时出现了数据库不存在的错误。这可能是由于连接配置或容器网络问题引起的。以下是解决此问题的步骤:

步骤1:检查连接配置

首先,确保你的连接配置与数据库容器的配置相匹配。根据你的描述,数据库容器运行在主机 127.0.0.1 上的端口 5439。确保你在连接时使用了正确的主机和端口。

步骤2:尝试使用容器名称连接

有时,使用容器名称而不是 IP 地址可能会更可靠。尝试使用容器名称连接到数据库。在你的情况下,容器名称是 qwc-docker_qwc-postgis_1。运行以下命令进行连接:

psql -h qwc-docker_qwc-postgis_1 -p 5432 -U qwc_service -d qwc-demo

步骤3:确认容器网络设置

确保容器网络设置正确,以便你可以从主机上的127.0.0.1访问容器。如果容器使用了默认的网络设置,通常可以通过主机的 IP 地址访问容器。但在某些情况下,可能需要配置容器网络以允许从主机访问容器。可以在容器启动时添加 --network="host" 参数,以便容器与主机共享网络命名空间,从而允许使用127.0.0.1连接到容器。

步骤4:检查数据库名称

虽然你已确认数据库名称为 qwc-demo,但在连接时依然报告数据库不存在的错误。确保在连接时没有拼写错误或其他语法错误。

步骤5:尝试连接到默认端口

通常情况下,PostgreSQL 默认使用 5432 端口。尝试将连接端口更改为 5432,并再次尝试连接。

步骤6:检查容器状态

检查数据库容器的状态以确保它正在运行,并且没有其他问题。运行以下命令检查容器状态:

docker ps

确保容器 qwc-docker_qwc-postgis_1 处于运行状态。

如果你尝试了以上步骤仍然无法解决问题,可能需要进一步检查容器网络配置、数据库配置和容器日志,以确定具体原因。也可以查阅相关文档或社区来获取更多帮助。

引用

如果你在尝试以上解决方案时遇到问题,请确保你已经备份了相关数据和配置。此外,你还可以查阅相关文档或社区,以获取更多关于容器网络设置和连接配置的详细信息。

正文完