Postgresql
在 psql 錯誤消息中獲取 SQLSTATE
我有以下問題。
SELECT * FROM tgvbn(); ERROR: function tgvbn() does not exist LINE 1: SELECT * FROM tgvbn(); ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
由於官方文件的附錄 A僅說明了 error_codes 和條件名稱,而沒有說明實際的消息,因此只能猜測“No function matches…”指的是
42883 / undefined_function
. 我可以設置log_error_verbosity = verbose
-postgresql.conf
但這會影響日誌,而不是返回給客戶端的消息:控制記錄在伺服器日誌中的每條消息的詳細資訊量。
好吧,我可以查閱日誌以獲取這條資訊,但是有什麼方法可以將它包含在錯誤消息中嗎?
根據 a_horse_with_no_name 的評論,我開始四處搜尋
psql
並找到了解決方案:\set VERBOSITY verbose SELECT * FROM tgvbn(); ERROR: 42883: function vfjkb() does not exist ...
現在進入
.psqlrc
. 可以在psql 文件中找到詳細資訊和更多選項。
看起來從 9.2 版開始就有這樣的功能:
DECLARE text_var1 text; text_var2 text; BEGIN -- some processing which might cause an exception ... EXCEPTION WHEN OTHERS THEN GET STACKED DIAGNOSTICS text_var1 = RETURNED_SQLSTATE, text_var2 = PG_EXCEPTION_DETAIL; END;