2017-05-22 1 views
1

Ich habe ein Projekt von einem Mitarbeiter ohne Kenntnisse von Postgres erhalten. Ich versuche, eine pg_restore in eine Jenkins-Pipeline-Job zu integrieren, und es gibt einen Fehler, der mir gesagt wurde, ist in Ordnung, zu übersehen. Dieser Fehler führt jedoch offensichtlich dazu, dass der Jenkins-Job fehlschlägt, was unleugbar ist.pg_restore - spezifischen Fehler ignorieren

Gibt es eine Möglichkeit, die Ausgabe dieses einen Fehlers zu mildern oder zu ersticken, ohne andere (ernsthaftere) Fehler bei der Aufzeichnung zu stoppen?

Der Befehl I (mit allen personenbezogenen Daten gestrippt) leite

PGPASSWORD="password" pg_restore -h path -U user -d database filename -F c -c 

ist und es gibt diesen Fehler zurück (aber erfolgreich ausgeführt)

pg_restore: [archiver (db)] Error while PROCESSING TOC: 
pg_restore: [archiver (db)] Error from TOC entry 8290; 0 0 COMMENT EXTENSION plpgsql 
pg_restore: [archiver (db)] could not execute query: ERROR: must be owner of extension plpgsql 
    Command was: COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language'; 

Auch hier habe ich weniger als Null Postgres Erfahrung . Gibt es eine einfache Möglichkeit, diesen einen Fehler zu ignorieren, oder ist das nur etwas, mit dem ich leben muss?

+0

Mögliches Duplikat von [So lösen Sie Privilegprobleme bei der Wiederherstellung der PostgreSQL-Datenbank] (https://stackoverflow.com/questions/13410631/how-to-solve-privileges-issues-when-restore-postgresql-database) – dmfay

+0

@ dmfay Während Sie von einem Postgres-Ansatz aus recht haben, versuche ich nicht, das zugrunde liegende Problem zu lösen, sondern den Fehler zu unterdrücken. Ich habe keinen Zugriff auf die Datenbank, die kontaktiert wird, also sind die einzigen Dinge, die ich bearbeiten kann, der jenkins-Job und die Befehle, die ich ausführe. – Alex

Antwort

0

Wenn Sie pg_restore als den Benutzer ausführen, der die Erweiterung in der Quelldatenbank besitzt, würde das das Problem für real beheben.

Zur Unterdrückung nur die Frage: mit altem Stil Scriptschritten, das Hinzufügen #!/bin/sh -x als erste Linie wäre es von Abbruch auf einem Nicht-Null-Return-Code verhindern (Jenkins läuft normalerweise Schalen mit der -e Option als auch). Es ist einen Versuch wert mit einem Pipeline-Build, aber ich weiß nicht genau, ob es genauso funktionieren wird. Ist dies der Fall, beachten Sie, dass das Skript auch nach anderen Codes für fehlerhafte Rückgabe fortgesetzt wird.

Verwandte Themen