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