PostgreSQL-Tipp: Abbrechen bei Fehlern mit ON_ERROR_STOP

Wenn Du mit PostgreSQL arbeitest und SQL-Dumps oder Skripte einspielst, bist Du vielleicht schon auf ein Problem gestoßen: Standardmäßig läuft der psql-Client trotz auftretender Fehler einfach weiter. Das kann dazu führen, dass nachfolgende Befehle ausgeführt werden, obwohl die vorherigen fehlgeschlagen sind. Das ist oft nicht gewünscht und kann zu inkonsistenten Daten oder weiteren Fehlern führen.

Zum Glück gibt es eine einfache Lösung: Die Option ON_ERROR_STOP sorgt dafür, dass psql die Ausführung sofort beim ersten Fehler stoppt.

So aktivierst Du ON_ERROR_STOP

Direkt beim Aufruf von psql

Du kannst die Option über die Kommandozeile setzen, indem Du --set=ON_ERROR_STOP=on hinzufügst:

psql -U <benutzername> -d <datenbankname> --set=ON_ERROR_STOP=on -f <pfad/zur/sql-datei.sql>

Beispiel:

psql -U postgres -d meine_datenbank --set=ON_ERROR_STOP=on -f dump.sql

Interaktiv in einer psql-Sitzung

Falls Du in einer interaktiven psql-Sitzung arbeitest, kannst Du die Option direkt setzen:

  1. Starte psql:
    psql -U <benutzername> -d <datenbankname>
  2. Aktiviere ON_ERROR_STOP:
    \set ON_ERROR_STOP on
  3. Führe Deine SQL-Befehle oder Dateien aus:
    \i '/pfad/zur/sql-datei.sql';

Warum ist ON_ERROR_STOP nützlich?

  • Frühes Eingreifen bei Fehlern: Wenn ein Fehler auftritt, kannst Du sofort reagieren und musst nicht erst später in den Logs suchen.
  • Sicherstellung von Konsistenz: Folgefehler werden vermieden, da nach einem Fehler keine weiteren Befehle ausgeführt werden.
  • Skriptsteuerung: psql gibt bei einem Fehler einen Exit-Code ungleich 0 zurück, was besonders in automatisierten Skripten hilfreich ist.

Fehlerprotokollierung

Falls Du die Fehler analysieren möchtest, kannst Du die Ausgabe von psql in eine Logdatei umleiten:

psql -U <benutzername> -d <datenbankname> --set=ON_ERROR_STOP=on -f <pfad/zur/sql-datei.sql> > log.txt 2>&1

Fazit

Die Option ON_ERROR_STOP ist ein einfacher, aber effektiver Weg, um sicherzustellen, dass Fehler in Deinen SQL-Skripten nicht ignoriert werden. Egal ob Du manuell arbeitest oder automatisierte Prozesse aufsetzt – mit dieser Einstellung hast Du die Kontrolle und vermeidest unerwünschte Nebenwirkungen.

Probier es aus und stelle sicher, dass Deine PostgreSQL-Skripte robust und fehlerfrei laufen!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert