這些函數控制 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
#決定由 PQerrorMessage
和 PQresultErrorMessage
傳回的訊息的詳細程度。
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
#決定如何處理由 PQerrorMessage
和 PQresultErrorMessage
傳回的訊息中的 CONTEXT
欄位。
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
欄位僅包含在錯誤訊息中,而不包含在通知和警告中。(但是,如果詳細程度設定為 TERSE 或 SQLSTATE,則無論內容顯示模式如何,都會省略 CONTEXT
欄位。)
變更此模式不會影響來自現有的 PGresult
物件的可用訊息,僅影響後續建立的物件。(但是,如果您想以不同的顯示模式列印先前的錯誤,請參閱 PQresultVerboseErrorMessage
。)
PQtrace
#啟用將客戶端/伺服器通訊追蹤到偵錯檔案流。
void PQtrace(PGconn *conn, FILE *stream);
每一行包含:一個可選的時間戳記、一個方向指示符(從客戶端到伺服器的訊息為 F
,從伺服器到客戶端的訊息為 B
)、訊息長度、訊息類型以及訊息內容。 非訊息內容欄位(時間戳記、方向、長度和訊息類型)以 Tab 鍵分隔。訊息內容以空格分隔。協定字串包含在雙引號中,而用作資料值的字串包含在單引號中。不可列印的字元會列印為十六進位逸出字元。更多特定於訊息類型的詳細資訊,請參閱第 53.7 節。
在 Windows 上,如果 libpq 函式庫和應用程式使用不同的標記編譯,則此函數呼叫會使應用程式崩潰,因為 FILE
指標的內部表示形式不同。具體來說,多執行緒/單執行緒、發布/偵錯和靜態/動態標記對於函式庫和所有使用該函式庫的應用程式都應該相同。
PQsetTraceFlags
#控制客戶端/伺服器通訊的追蹤行為。
void PQsetTraceFlags(PGconn *conn, int flags);
flags
包含描述追蹤操作模式的旗標位元。如果 flags
包含 PQTRACE_SUPPRESS_TIMESTAMPS
,則列印每個訊息時不包含時間戳記。如果 flags
包含 PQTRACE_REGRESS_MODE
,則列印每個訊息時會編輯某些欄位,例如物件 OID,以便使輸出更方便在測試框架中使用。必須在呼叫 PQtrace
之後呼叫此函數。
PQuntrace
#停用由 PQtrace
啟動的追蹤。
void PQuntrace(PGconn *conn);
如果您在文件中發現任何不正確、與您使用特定功能的體驗不符或需要進一步澄清的地方,請使用此表單來回報文件問題。