无法使用 libpq 连接到 postgreSQL 服务器

标签 c postgresql libpq c-api

我是一个正在尝试学习 PostgreSQL 的完全新手。我正在尝试使用 libpq 通过 C 程序连接到我的 postgres 服务器。

这是服务器状态:

home/planb/postgresql-9.2.4/Project status -o "-p 5555"
pg_ctl: server is running (PID: 2338)
/usr/local/pgsql/bin/postgres "-D" "/home/planb/postgresql-9.2.4/Project" "-p5555"

当我编译时,我使用:

gcc -I /usr/local/pgsql/include -L /usr/local/pgsql/lib test.c -lpq

当我使用 ./a.out 运行程序时,它显示:

Connection error

我相信我没有正确使用 PQconnectdb,但也可能是其他原因。

这是我的 C 文件:test.c

#include <stdio.h>
#include <stdlib.h>  
#include <libpq-fe.h>

int main(int argc, char* argv[])
{
//Start connection
PGconn* connection = PQconnectdb("hostaddr=168.105.127.3 port=5555 dbname=Project username=postgres password=password");

if (PQstatus(connection) ==CONNECTION_BAD)
    {
    printf("Connection error\n");
    PQfinish(connection);
    return -1; //Execution of the program will stop here
    }
    printf("Connection ok\n");
    //End connection
    PQfinish(connection);
    printf("Disconnected\n");
    return 0;
}

非常感谢任何意见,谢谢!

明白了!

我没有使用有效的主机地址。我将其替换为:

host=localhost

我还删除了 dbname=Project。当我运行它时,我得到:

Msg: Connection ok
Disconnected

最佳答案

这是我的问题的解决方案:

我没有使用有效的主机地址。我连接到自己的本地服务器的正确方法是:

host=localhost

我还删除了 dbname=Project。我收到一条消息,说它不是真正的数据库。我想我不需要在 PQconnectdb 中调用 dbname。

现在,当我通过这些更改运行它时,我得到:

Msg: Connection ok
Disconnected

关于无法使用 libpq 连接到 postgreSQL 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108009/

相关文章:

linux - g++ 抛出文件无法识别 : File format not recognized error

C:如果参数从右向左压入,为什么会出现下面的情况? (64位操作系统,32位程序)

带 parent 的sql唯一约束

linux - 如何在 Windows 中执行此 linux 命令?

postgresql - 在 Spring Boot 2、Hibernate、PostgreSQL 中通过 JDBC 语句执行 DDL 时出错

sql - 如何在 Postgres 中对多个表中出现的事件求和

c - PQunescapeBytea() 为 E'\n'::bytea 返回类似 "x0a"的字符串

c - 在OpenGL中变换后获取顶点?

c - 如何获取execlp的退出代码

c - gdb 便利变量 strcat