libpq:如何在PGconn连接失败后获取错误代码

时间:2014-04-28 18:56:52

标签: postgresql libpq

给出以下代码。

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

如果连接失败,有一种方法可以获得错误代码 区分密码错误和服务器故障。

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

感谢。

2 个答案:

答案 0 :(得分:2)

因此,在做了一些研究并询问postgres开发人员后,似乎目前无法从PQconnectdbParams()获取错误代码。

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

这似乎是在postgres dev todo列表中,但它不是优先事项。

TL; DR:如果您打算使用libpq,请学会使用文本错误消息(无论其本地化的语言)。

答案 1 :(得分:1)

...试

cout << PQerrorMessage(conn) << endl;