问题标签 [libpq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4151 浏览

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

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

这是服务器状态:

当我编译时,我使用:

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

我相信我没有正确使用 PQconnectdb,但它可能是其他事情。

这是我的 C 文件:test.c

非常感谢任何输入,谢谢!

弄清楚了!

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

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

0 投票
2 回答
1584 浏览

postgresql - 为什么`libpq`使用轮询而不是通知来获取数据?

我正在阅读libpq参考资料。它同时具有同步和异步方法。但是我发现了一些奇怪的东西。

当我看到PQsendQuery函数时,它似乎发送了一个查询并立即返回。我希望回调函数会得到通知,但没有这样的事情,手册上说要轮询数据可用性。

我不明白为什么异步方法是以轮询方式编写的。无论如何,正如libp官方客户端实现一样,我相信这种设计应该有充分的理由。那是什么?还是我错过了其他地方提到的正确回调内容?

0 投票
0 回答
325 浏览

python - psycopg2 无法使用 Mac Homebrew 制作的 libpq.dylib

我通过在 OS X 10.8.5 上安装了 Homebrew 版本的 Postgres

然后cp /usr/local/Cellar/postgresql/9.2.3/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/为它添加了一个午餐启动器。

然后我将(setup.cfg)指向它并输入python setup.py build ,但随后出现此错误:

ld: warning: ignoring file /usr/local/Cellar/postgresql/9.2.3/lib/libpq.dylib, file was built for unsupported file format ( 0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0 ) which is not the architecture being linked (i386): /usr/local/Cellar/postgresql/9.2.3/lib/libpq.dylib

因此,通过 brew 构建 libpq 似乎有些奇怪(从psycopg2的角度来看)

0 投票
1 回答
995 浏览

postgresql - 如何从 SQL 语法错误或从 libpq 执行异常中获取错误行/列号?

当我通过 执行 SQL 命令时libpq,如果出现类似这样的错误,它会报告错误消息。

这是字符串消息。我可以解析消息 - 因为它非常有规律 - 以获取行号/列号,但这是不可靠的。是否有任何其他 API 来获取行/列号?任何正则化整数形式都会很好。

0 投票
1 回答
569 浏览

ruby-on-rails - gem install pg 有效,但 bundle install 无效

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config有效,但是当我尝试运行 bundle install 时,它会引发此错误

Can't find the PostgreSQL client library (libpq)

0 投票
1 回答
2003 浏览

c++ - 不在 C++ 程序中使用 libpq 检索 NOTIFY

我正在增强 ROS(机器人操作系统)堆栈sql_database以能够处理 postgresqls LISTEN 和 NOTIFY 命令。如前所述,我在 C++ 程序中的 Ubuntu12.04 上使用 libpq 版本 9.1.10-0。但由于某些原因,我无法检索通知。

我知道,有一个示例(示例 28-2.libpq 示例程序 2),它工作得非常好。我已经玩了很长时间,还尝试将它尽可能准确地复制到我的代码中,并以一种更类似于我遇到问题的代码的方式更改示例代码。但这对我的问题没有帮助。

我可以在示例程序和手动登录数据库中收到通知,但不能在我想使用的代码中收到通知。

我还尝试了什么:

  • 连接到不同的数据库 - 没有改变任何东西。
  • COMMIT;在我执行命令后执行LISTEN <channel>;。但这引起了预期的警告,因为我没有未结交易。
  • 在我做之前检查连接是否已经死PQconsumeInput(connection_);- 它纯粹是活着的
  • 在同一个函数中执行 LISTEN 命令,我正在检查 NOTIFY(使用断点在两者之间触发 NOTIFY) - 没有改变任何东西。

NOTIFY 总是手动触发NOTIFY <channel>;

代码结构

代码也可以在 github上看到(在不稳定的分支上):

  • class PostgresqlDatabase (in sql_interface->database_interface->src on github)
    这个类持有连接 PGconn 并提供如下任务

    该类的主要目的是抽象 sql 查询,这样 ROS 程序员就不必再关心它们了。

  • class databaseBinding
    它是 ROS 和数据库功能之间的粘合剂。它拥有一个 PostgresqlDatabase 对象以获取数据库连接并调用任务。

  • 一个主要功能
    做以下事情

    1. 做一些 ROS 初始化的东西
    2. 创建一个 databaseBinding 对象,它将初始化一个 PostgresqlDatabase 对象,该对象建立与我的数据库的连接
    3. 调用PostgresqlDatabase::listenToChannel(std::string channel)-函数
    4. PostgresqlDatabase::checkNotify(notification &no)使用-function定期循环检查 NOTIFY

一些代码

检查通知

checkNotify 函数,每秒触发约 5 次:

收听频道

0 投票
1 回答
4391 浏览

c++ - 如何使用 libpq 获得双精度值?

libpq 文档中的示例显示了如何通过将整数值转换为主机端序表示来获取整数值。

我很好奇必须做什么才能使用 libpq(没有 libpqtyppes)获得双精度值?我试过reinterpret_cast没有运气。

还有为什么文本和字节数据不需要字节序转换?

该数据库在 Windows 7 上本地运行,我使用的是 Visual C++ 2013。

pptr是我试图检索的双重价值。

0 投票
0 回答
165 浏览

postgresql - 在 libpq 中设置 SO_REUSEADDR

有没有办法指示libpqSO_REUSEADDR为其打开的套接字设置选项?

0 投票
1 回答
2016 浏览

qt - 链接到 libpq 失败,符号 _PQconnectdb 未解析

我使用 Qt5、msvc2010、windows7 64 位。

我想测试我是否可以链接 libpq.lib。

http://www.postgresql.org/docs/9.2/static/libpq-example.html

我在 QtCreator 中构建了上面的示例。

并得到

error LNK2019: unresolved external symbol _PQconnectdb in function "_main"

我检查了我的 libpq.lib 使用dumpbin libpq.lib /exports

并得到

如何查看 Windows 库 (*.lib) 的内容

所以区别是PQconnectdb and _PQconnectdb

是那个使链接器找不到真正的符号 PQconnectdb 的下划线吗?为什么编译器在符号后面加下划线?

我怎么解决这个问题?

0 投票
1 回答
2301 浏览

postgresql - 创建函数未终止的美元引号字符串

我正在尝试使用 postgres ( pq lib ) 数据库使用Goose创建此函数。

我的代码如下:

当我尝试goose up它时,它会提供一个错误:

Goose 基本上是回显pq库错误,所以我不认为它在 Goose 中,而是在 pq-library 中。查询在 pgAdmin III 上运行成功。