问题描述
在安装了qwc-docker之后,尝试连接到创建的PostGIS数据库,但无法成功连接。他在运行psql
命令时遇到了错误,虽然数据库正在运行且可访问。
以下是用户的数据库信息:
– 数据库容器名称: qwc-docker_qwc-postgis_1
– 用户名: qwc_service
– 数据库名称: qwc-demo
– 主机: 127.0.0.1
– 端口: 5439
用户尝试了以下两种方式连接数据库,但都遇到了问题:
-
运行命令:
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
-
在容器内部运行命令:
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
处于运行状态。
如果你尝试了以上步骤仍然无法解决问题,可能需要进一步检查容器网络配置、数据库配置和容器日志,以确定具体原因。也可以查阅相关文档或社区来获取更多帮助。
引用
如果你在尝试以上解决方案时遇到问题,请确保你已经备份了相关数据和配置。此外,你还可以查阅相关文档或社区,以获取更多关于容器网络设置和连接配置的详细信息。