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:
- Starte
psql
:psql -U <benutzername> -d <datenbankname>
- Aktiviere
ON_ERROR_STOP
:\set ON_ERROR_STOP on
- 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 ungleich0
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!