给出以下代码。
PGconn* const conn=PQconnectdbParams(keywords, values, false);
if(! conn || PQstatus(conn)!=CONNECTION_OK){ /* error code? */ }
如果连接失败,有一种方法可以获得错误代码 区分密码错误和服务器故障。
(我知道我可以收到错误消息,但我希望能够对原因做出反应 错误根据其原因)。
感谢。
答案 0 :(得分:2)
因此,在做了一些研究并询问postgres开发人员后,似乎目前无法从PQconnectdbParams()获取错误代码。
这似乎是libpq本身的一个缺点,它不会尝试为内部检测到的错误(如未知的主机名)分配SQLState错误代码。
这似乎是在postgres dev todo列表中,但它不是优先事项。
TL; DR:如果您打算使用libpq,请学会使用文本错误消息(无论其本地化的语言)。
答案 1 :(得分:1)
...试
cout << PQerrorMessage(conn) << endl;