it-swarm.com.de

Debuggen Sie die PostgreSQL-Funktion mit pgAdmin

Ich beziehe mich auf this , um den Debugger auf dem PostgreSQL-Server zu aktivieren, um die Funktion plpgsql zu debuggen, indem die Codes mit pgadmin durchlaufen werden.

Ich habe bereits shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' In postgresql.conf Eingestellt, pldbgapi.sql Ausgeführt und den Server neu gestartet.

Diese Schritte sollten erfolgreich ausgeführt und plugin_debugger.dll Erfolgreich geladen worden sein. Dies kann mit dem Befehl show shared_preload_libraries Überprüft werden. Die Debugging-Option wird im Kontextmenü angezeigt, wenn Sie mit der rechten Maustaste auf a klicken Funktion in pgAdmin.

enter image description here

Wenn Sie "Debugging" -> "Debug" wählen, wird ein Fenster geöffnet, in dem Sie die Werte für die Eingabeparameter eingeben können. Aber danach, wenn ich OK drücke, reagiert es überhaupt nicht.

enter image description here

Irgendwelche Ideen oder habe ich etwas im Setup des Debuggers auf dem Server verpasst?

Ich benutze PostgreSQL 8.3 und pgAdmin 1.14

65
Ken Chan

Sie müssen das Debuggen an zwei Stellen aktivieren. In PGAdmin und in der Datenbank selbst. Der Artikel, auf den Sie sich bezogen haben, hat eine wunderbare Arbeit geleistet, um es zu erklären, aber es gab einige Nuancen.

PGAdmin

Beim Aktualisieren Ihres postgresql.conf Datei zum Laden der Debug-Bibliothek, ich war mit PGAdmin unter Windows also war die Datei hier:

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf

Und der Weg zum plugin_debugger.dll war eigentlich

$libdir/plugin_debugger.dll

nicht

$libdir/plugins/plugin_debugger.dll

wie im Artikel angegeben. Also dein postgresql.conf würde eine Zeile wie diese brauchen

shared_preload_libraries = '$libdir/plugin_debugger.dll'

Suchen Sie nach der aktuellen DLL, wenn Sie Zweifel haben. Wenn Sie unter Linux arbeiten, ist die gesuchte Datei plugin_debugger.so. Vergiss nicht, dass das postgresql.conf -Datei erfordert einen Neustart, damit die Änderung wirksam wird.

PostgreSQL-Datenbank

Angenommen, Sie betreiben Ihre PostgreSQL-Datenbank auf einem Linux-Server diese Übersicht erklärt hervorragend, wie die Abhängigkeiten zum Aktivieren des Debuggens heruntergeladen werden. Stellen Sie sicher, dass Sie bei der Installation als Root ausgeführt werden.

Der Teil, der leicht zu übersehen ist, besteht darin, den Befehl für die eigentliche Datenbank auszugeben, die Sie debuggen möchten. Für neuere Versionen von PostgreSQL müssen Sie lediglich Folgendes tun:

CREATE EXTENSION IF NOT EXISTS pldbgapi;

Wenn dies keinen Fehler zurückgibt, sollten Sie bereit sein.

Einige zusätzliche wichtige Dinge:

  • Wie oben erwähnt, können Sie nur debuggen, wenn Sie als Superuser-Konto ausgeführt werden
  • Von ihren Dokumenten können Sie nur pl/pgsql-Funktionen debuggen. Also, wenn Ihre Funktion etwas sagt wie LANGUAGE c PGAdmin zeigt nicht einmal die Menüoption Debuggen mit der rechten Maustaste an, wenn Sie die Funktion auswählen. Suchen Sie nach etwas, das LANGUAGE plpgsql und das Debug-Menü sollte angezeigt werden.
6
Joel B

Ken,

Haben Sie versucht, mit pgAdmin 1.8 ein Problem mit der Interaktion mit PgAdmin 1.14/PostgreSQL 8.3 auszuschließen? Es ist schon eine Weile her, dass ich 8.3 verwendet habe, und für den Artikel, den ich geschrieben habe, auf den Sie sich beziehen, habe ich mit 1.14/PostgreSQL 9.1 getestet, sodass es sehr gut zu Problemen mit der Interaktion mit älteren Versionen kommen kann. Leider habe ich keine 8.3 mehr zum Testen.

Ich erinnere mich vage an das Problem, das Sie einmal hatten, aber es war, als ich zusätzlich zum pldebugger eine andere gemeinsam genutzte Bibliothek in meiner postgresql.conf hatte. Ich kann mich nicht erinnern, welche es war, aber das Entfernen der anderen gemeinsam genutzten Bibliothek hat mein Problem behoben.

Hoffe einige dieser Vorschläge helfen, Regina

2
LR1234567

Ich hatte das gleiche problem Stellen Sie sicher, dass die nur shared lib, die Sie in der postgres.conf laden, der Debugger ist. Nichts anderes. Nicht einmal der Profiler. Wenn beim Debuggen einer Funktion ein SSL-Fehler auftritt, stellen Sie die Verbindung zum Server wieder her.

1
foo