U moet foutopsporing op twee plaatsen inschakelen. Op PGAdmin en op de database zelf. Dat artikel waarnaar u verwijst, legt het geweldig uit, maar er waren enkele nuances.
PGAdmin
Bij het bijwerken van uw postgresql.conf
bestand om de foutopsporingsbibliotheek te laden, was ik met PGAdmin op Windows
dus het bestand was hier:
C:\Program Files\PostgreSQL\9.4\data\postgresql.conf
En het pad naar de plugin_debugger.dll
was eigenlijk
$libdir/plugin_debugger.dll
niet
$libdir/plugins/plugin_debugger.dll
zoals aangegeven in het artikel. Dus uw postgresql.conf
zou een regel als deze nodig hebben
shared_preload_libraries = '$libdir/plugin_debugger.dll'
Zoek naar de daadwerkelijke .dll als je twijfelt. Als je Linux gebruikt, is het bestand dat je zoekt plugin_debugger.so
. Vergeet niet dat het wijzigen van de postgresql.conf
bestand moet opnieuw worden opgestart om de wijziging door te voeren.
PostgreSQL-database
Ervan uitgaande dat u uw PostgreSQL-database uitvoert op een Linux-server deze gist doet uitstekend werk door uit te leggen hoe de afhankelijkheden moeten worden gedownload om foutopsporing mogelijk te maken. Zorg ervoor dat u als root werkt wanneer u installeert.
Het deel dat gemakkelijk over het hoofd wordt gezien, is het uitvoeren van de opdracht tegen de daadwerkelijke database die u wilt debuggen. Voor nieuwere versies op PostgreSQL hoeft u alleen dit te doen:
CREATE EXTENSION IF NOT EXISTS pldbgapi;
Als dat geen fout retourneert, zou je klaar moeten zijn om te gaan.
Enkele aanvullende opmerkingen:
- Zoals hierboven vermeld, kunt u alleen fouten opsporen als u werkt als een supergebruikersaccount
- Van hun documenten
u kunt alleen pl/pgsql-functies debuggen. Dus als je functie iets zegt als
LANGUAGE c
PGAdmin zal niet eens een rechtsklik menuoptie voor foutopsporing tonen wanneer u de functie selecteert. Zoek naar iets datLANGUAGE plpgsql
. heeft en het Debug-menu zou moeten verschijnen.