Postgresql PQconnectdb 错误地连接到另一个数据库,为什么?

问题描述 投票:0回答:1

我通过postgres数据库安装了postgresql。 Postgresql 版本 12.17。 创建新数据库 myendb 之后。 我正在使用 libpq。 我尝试使用 PQconnectdb () 函数通过以下连接字符串来连接 myendb:

host=localhost port=54312 user=postgres password= dbname=myendb

用户密码为空。 然后我执行了以下命令:

SELECT current_database();

libpq 给了我以下结果:postgres。这是错误的,因为我已经连接到 myendb 数据库。 你知道为什么吗?但我已经连接到 myendb 数据库...... 谢谢!

在我使用 PQsetdbLogin() 而不是 PQconnectdb() 后,libpq 连接到我期望的 myendb。为什么PQsetdbLogin和PQconnectdb有一些区别? 在文档中说:

它具有相同的功能,除了缺少的参数将 始终采用默认值。

https://www.postgresql.org/docs/8.1/libpq.html 这很奇怪...

postgresql pg connect libpq
1个回答
0
投票

您已将密码设置为“dbname=myendb”,并且未将数据库名称设置为任何内容,因此它默认为“postgres”。如果您不想设置密码,请不要在连接字符串中提及它。 (或者,按照您链接的文档进行操作:“要写入空值......用单引号将其引起来”)

您不能简单地使用 PQsetdbLogin() 代替 PQconnectdb(),因为它们具有不同的签名。您必须解析出字符串才能获取各个参数,这与 PostgreSQL 的做法不同。

© www.soinside.com 2019 - 2024. All rights reserved.