3

给定以下代码。

PGconn* const conn=PQconnectdbParams(keywords, values, false);
if(! conn || PQstatus(conn)!=CONNECTION_OK){ /* error code? */ }

在连接失败的情况下,有一种方法可以让错误代码能够区分密码错误和服务器关闭。

(我知道我可以收到错误消息,但我希望能够根据错误原因对错误原因做出反应)。

谢谢。

4

2 回答 2

3

因此,在进行更多研究并询问 postgres 开发人员之后,目前似乎无法从 PQconnectdbParams() 获取错误代码。

这似乎是 libpq 本身的一个缺点,它不会尝试为其内部检测到的错误(如未知主机名)分配 SQLState 错误代码。

这似乎在 postgres dev todo list 上,但这不是优先事项。

TL;DR:如果您要使用 libpq,请学会接受文本错误消息(无论它是本地化的哪种语言)。

于 2014-04-30T07:08:57.340 回答
1

尝试...

cout << PQerrorMessage(conn) << endl;
于 2015-09-09T16:38:43.140 回答