Ich verwende Postgres für ein Django-Projekt und implementiere derzeit ein Datenbanksicherungs- / Wiederherstellungssystem, das so einfach wie möglich einen pg_dump ausführt, wenn der Benutzer auf Backup klickt, und dann pg_restore, wenn er auf Backup wiederherstellen klickt.
Alles scheint in Ordnung und gut zu sein, bis es tatsächlich versucht, den pg_restore auszuführen. Zu diesem Zeitpunkt gibt es diesen Fehler:
pg_restore: [archiver (db)] Fehler vom Inhaltsverzeichniseintrag 3206; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] konnte keine Abfrage ausführen: ERROR: muss Eigentümer der Erweiterung sein plpgsql Befehl war: COMMENT ON EXTENSION plpgsql IS 'PL / pgSQL-Prozedurensprache';
Ich habe mir angesehen, was plpgsql usw. ist, und ich verstehe das. In Bezug auf den Fehler habe ich versucht, den "Eigentümer der Erweiterung" manuell auf den Benutzer festzulegen, der das Skript ausführt und die Datenbank selbst besitzt, aber das hat nichts geändert, was seitdem wirklich ärgerlich ist Es ist ein Fehler bei dem Versuch, einen Kommentar zu allen Dingen abzugeben
Dies alles wird automatisch von pg_dump erstellt, sodass die Kommentarzeile nicht entfernt werden kann und es keine Flags zum Deaktivieren von Kommentaren gibt (von denen ich weiß, dass sie deaktiviert sind). Daher bin ich wirklich festgefahren, wie dieses Problem gelöst werden kann.
\l
, was sehen Sie in der Spalte "Eigentümer" für diese Datenbank? Da plpgsql eine nicht vertrauenswürdige Sprache ist, kann sie nur vom Datenbankeigentümer oder einem Datenbank-Superuser geändert werden (und ich würde vermuten, dass dies auch für den Kommentar gilt).