我通过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
1条答案
按热度按时间pvcm50d11#
您已经将密码设置为'dbname= myendb',并且还没有将dbname设置为任何值,因此它默认为'postgres'。如果您不想设置密码,请不要在连接字符串中提及它。(或者,按照您链接的文档中的说法:“要写入空值......用单引号将其括起来”)
你不能简单地使用PQsetdbLogin()而不是PQconnectdb(),因为它们有不同的签名。你必须解析出字符串以获取单个参数,这与PostgreSQL的方式不同。