Abrufen von SQLSTATE in psql-Fehlermeldungen

8

Ich habe folgendes Problem.

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.

Da Anhang A der offiziellen Dokumentation nur Fehlercodes und bedingte Namen enthält, nicht jedoch die tatsächlichen Nachrichten, kann man nur vermuten, dass sich "Keine Funktion stimmt überein ..." bezieht 42883 / undefined_function. Ich kann eingestellt log_error_verbosity = verbosein postgresql.conf- aber das wird die Protokolle betrifft, nicht die Nachrichten an den Client zurückgegeben:

Steuert die Detailgenauigkeit, die für jede protokollierte Nachricht in das Serverprotokoll geschrieben wird.

Nun, ich kann die Protokolle für diese Informationen einsehen, aber gibt es eine Möglichkeit, sie in die Fehlermeldungen aufzunehmen?

dezso
quelle
Dies ist eher ein psql-Problem als ein "Serverkonfigurations" -Problem. Mein SQL-Client zeigt in einem solchen Fall den SQLSTATE an.
a_horse_with_no_name
@a_horse_with_no_name Danke, Ihr Kommentar hat mich auf die Lösung hingewiesen.
Dekso

Antworten:

8

Basierend auf dem Kommentar von a_horse_with_no_name begann ich mich umzuschauen psqlund fand die Lösung:

\set VERBOSITY verbose
SELECT * FROM tgvbn();

ERROR:  42883: function vfjkb() does not exist
...

Nun das geht in .psqlrc. Details und weitere Optionen finden Sie in der psql-Dokumentation .

dezso
quelle
Ich habe das Handbuch schnell durchgesehen, nachdem ich meinen Kommentar gepostet habe, aber ich habe diesen nicht gesehen;) Danke für das Update.
a_horse_with_no_name
1

Es sieht so aus, als ob seit Version 9.2 Funktionen dafür vorhanden sind:

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;
ChetPrickles
quelle