选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

33.10. 控制函数 #

这些函数控制libpq行为各种各样的细节。

PQclientEncoding #

返回客户端编码。

int PQclientEncoding(const PGconn *conn);

请注意,它返回的是编码 ID,而不是一个符号串字符串,如EUC_JP。如果不成功,它会返回 -1。要把一个编码 ID 转换为为一个编码名称,可以用:

char *pg_encoding_to_char(int encoding_id);
PQsetClientEncoding #

设置客户端编码。

int PQsetClientEncoding(PGconn *conn, const char *encoding);

conn是到服务器的连接,而encoding是要使用的编码。如果成功设置编码,函数返回 0,否则返回 -1。此连接的当前编码可以通过以下函数确定:PQclientEncoding

PQsetErrorVerbosity #

设置以下函数所返回消息的详细程度:PQerrorMessagePQresultErrorMessage

typedef enum
{
    PQERRORS_TERSE,
    PQERRORS_DEFAULT,
    PQERRORS_VERBOSE,
    PQERRORS_SQLSTATE
} PGVerbosity;

PGVerbosity PQsetErrorVerbosity(PGconn *conn, PGVerbosity verbosity);

PQsetErrorVerbosity设置详细程度模式,并返回该连接先前的设置。在TERSE模式下,返回的消息只包含严重级别、主要文本和位置;通常一行就能容纳。DEFAULT模式生成的消息除上述内容外,还包含所有的详细信息、提示或上下文字段(这些内容可能跨越多行)。VERBOSE模式包含所有可用字段。SQLSTATE模式仅包含错误严重级别,以及可用时的SQLSTATE错误代码(如果没有错误代码,则输出与TERSE模式相同)。

更改详细程度设置不会影响已存在的PGresult对象的可用的消息,只会影响随后创建的对象。 (如果想要用不同的详细程度打印之前的错误,请见PQresultVerboseErrorMessage

PQsetErrorContextVisibility #

确定对CONTEXT字段的处理方式,这些字段位于以下函数返回的消息中:PQerrorMessagePQresultErrorMessage

typedef enum
{
    PQSHOW_CONTEXT_NEVER,
    PQSHOW_CONTEXT_ERRORS,
    PQSHOW_CONTEXT_ALWAYS
} PGContextVisibility;

PGContextVisibility PQsetErrorContextVisibility(PGconn *conn, PGContextVisibility show_context);

PQsetErrorContextVisibility设置上下文显示模式,并返回连接的先前设置。此模式控制消息中是否包含CONTEXT字段。NEVER模式从不包含CONTEXT,而ALWAYS在该字段可用时总是包含它。在ERRORS模式(默认)下,CONTEXT字段只包含在错误消息中,不包含在通知和警告中。(不过,如果详细程度设置为TERSESQLSTATECONTEXT字段都会被省略,无论上下文显示模式如何。)

更改此模式不会影响从既有 PGresult 对象中取得的消息,只影响随后创建的对象。(如果希望使用不同的显示模式打印之前的错误,请参见 PQresultVerboseErrorMessage。)

PQtrace #

启用对客户端/服务器通讯的跟踪,把跟踪信息输出到一个调试文件流中。

void PQtrace(PGconn *conn, FILE *stream);

Note

在 Windows上,如果libpq库和应用使用了不同的标志编译,那么这个函数调用会导致应用崩溃,因为FILE指针的内部表达是不一样的。特别是多线程/单线程、发布/调试 以及静态/动态标志应该是库和所有使用库的应用都一致。

PQuntrace #

禁用以下函数启动的跟踪:PQtrace

void PQuntrace(PGconn *conn);