我通过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有一些区别? 在文档中说:
它具有相同的功能,除了缺少的参数将 始终采用默认值。
您已将密码设置为“dbname=myendb”,并且未将数据库名称设置为任何内容,因此它默认为“postgres”。如果您不想设置密码,请不要在连接字符串中提及它。 (或者,按照您链接的文档进行操作:“要写入空值......用单引号将其引起来”)
您不能简单地使用 PQsetdbLogin() 代替 PQconnectdb(),因为它们具有不同的签名。您必须解析出字符串才能获取各个参数,这与 PostgreSQL 的做法不同。