Fehlermeldungen Client-seitig unterdrücken

Hallo,

Ich möchte eine PostgreSQL-Schnittstelle in einer PHP-Anwendung implementieren auf Basis der pg_-Funktionen.
Innerhalb der Anwendung soll es möglich sein, dass der Benutzer eigene SQL-Befehle definieren kann, welche anschließend wiederverwendet werden können. Bei fehlerhaften SQL-Abfragen sollte die Fehlermeldung abgefangen und entsprechend formatiert ausgegeben werden…

Allerdings werden die Fehlermeldungen ständig in folgender Form ausgegeben:
“WARNING pg_query(): Query failed: FEHLER: Syntaxfehler bei …”

Meine Frage ist nun, wie ich diese Meldungen unterdrücken kann. Ich arbeite auf der Postgres-Version 9.2.24.


ich arbeite erst seit kurzem mit PostgreSQL und bin praktisch noch ein totaler Anfänger (Noob) darin.
Also bitte ich um Entschuldigung falls diese Frage schonmal kam oder recht blöd ist. Ich habe allerdings auch schon 2h nach einer Lösung gegoogelt und nichts passendes gefunden.

Ich habe bereits versucht die php.ini auf display_error = Off und error_reporting = ~E_ALL zu setzen. Hat beides nicht funktioniert. Außerdem wird die Fehlermeldung auch nicht in einem try-catch-Block abgefangen, sodass sie verschwindet. Ein @ vor pg_query hilft da auch nicht.
Diese Ansätze sind natürlich nicht die beste Lösung. Doch ich wäre froh, wenn ich wenigstens erstmal eine Möglichkeit finden würde, diese Mledungen irgendwie zu unterdrücken.

Meiner Meinung nach müsste ich deshalb etwas in der postgresql.conf verändern. Doch da bin ich aufgrund fehlendes Wissens leider überfordert. :confused:

Mit freundlichen Grüßen,
Choji

client_min_messages

Auf welches Error-Level muss ich denn das Attribut setzen? Ich hatte es bereits auf error geändert, das hatte leider nichts bewirkt.
Also gehe ich davon aus, dass diese Fehlermeldung ein Fehler dieses Level ist…

Gibt es eine Möglichkeit mittels client_min_messages sämtliche Fehlermeldungen für den Client zu deaktivieren?

setze es halt auf PANIC.

Ich arbeite auf der Postgres-Version 9.2.24.

Hat nichts mit Deinem Problem zu tun, aber die Version wird schon seit einiger Zeit nicht mehr gepflegt.
Du solltest so schnell wie möglich ein Upgrade auf die aktuelle Version einplanen.

https://why-upgrade.depesz.com/show?from=9.2.24&to=12.1

setze es halt auf PANIC

Diese Einstellung gibt es für die Version 9.2.24 nicht.

Hat nichts mit Deinem Problem zu tun, aber die Version wird schon seit einiger Zeit nicht mehr gepflegt.
Du solltest so schnell wie möglich ein Upgrade auf die aktuelle Version einplanen.

Gibt es für client_min_messages höhere Level in späteren Versionen? Und wäre dann damit das Problem gelöst, sobald ich das Level auf FATAL setze?

sorry, hast Recht, es geht nur bis ERROR.

Wie kann man es dann lösen? Indem man server_min_messages auf ein höheres Level setzt? Irgendeinen Weg muss es ja geben, ansonsten ist es ja eigentlich unvorstellbar, dass man Fehlermeldungen nicht einfach unterdrücken und abfangen kann…

Die meisten Programmiersprachen kennen sog. Exception handler (z.B. “Try - catch” in Java) - dort kann man dann entscheiden ob der Fehler angezeigt, nur in’s Logfile geschrieben oder ignoriert wird.

Kennt PHP Exception-Handling?

Wie bereits weiter oben erwähnt, habe ich dies bereits versucht und der Fehler wird trotzdem ausgegeben.
Könnte das vielleicht daran liegen, dass ich eine nicht mehr unterstützte Postgres-Version verwende?

das ist eher nicht die Ursache, vermutlich.

wende Dich mal bitte an ein passendes PHP-Forum.

Fängst Du in PHP denn Fehler ab (“Exception Handler”)?

Ja, das mache ich. Ich habe auch mittlerweile einen Weg gefunden, wie die Fehlermeldung nicht erzeugt wird.
Mittels der Funktion pg_send_query() wird die Abfrage asynchron verarbeitet. Allerdings ist mir jetzt unschlüssig, wie ich den Fehler darüber abfangen und entsprechend ausgeben kann.

wende Dich mal bitte an ein passendes PHP-Forum.

Ja, das mache ich. Vielen Dank für eure Hilfe!

https://www.php.net/manual/de/function.error-reporting.php

Sollte die Lösung für dein PHP-Problem sein…

cu tb