PostgreSQL löst den Fehler aus: "FEHLER: Berechtigung verweigert für Beziehung tabellenname"

8

Ich versuche einen Schema-Dump in PostgreSQL zu importieren mit 'psql -U Benutzername -W dbname & lt; migrations / schema.psql 'wird das Schema teilweise importiert, aber die Konsole gibt Fehler wie "FEHLER: Berechtigung verweigert für Beziehung Tabellenname" und "FEHLER: Beziehung Tabellenname existiert nicht" aus.

Ich habe die Datenbank wie folgt erstellt: "createdb -O Benutzername dbname"

Es gibt nur 7 Tabellen zu importieren, und es bricht mit nur 3 von ihnen zu importieren.

Jemand einen Hinweis, was zu tun ist?

    
dennis.winter 18.08.2010, 12:52
quelle

3 Antworten

3

Wenn das Backup im "benutzerdefinierten" Format (-Fc) erstellt wurde, können Sie stattdessen pg_restore verwenden, damit Sie ihm mitteilen können, dass es keine Eigentumsänderungen zulässt:

%Vor%

Alle Objekte werden mit "Benutzername" als Eigentümer erstellt.

Berücksichtige das, versuche, die Befehle ALTER OWNER und SET SESSION AUTHORIZATION in eine neue Datei umzuwandeln (oder grep über pipe an psql zu senden). Diese Befehle sollten immer in einer einzigen Zeile im Ausgabeformat plain-text sein.

    
Matthew Wood 18.08.2010, 17:54
quelle
2

Manchmal wird diese Art von Problem durch Groß- und Kleinschreibung verursacht. PostgreSQL wird so gefaltet, dass alle nicht aufgeführten Bezeichner kleingeschrieben werden. Wenn die Tabellen mit in Großbuchstaben geschriebenen Namen in Anführungszeichen erstellt werden, können spätere Befehle, die die Namen nicht angeben, die Tabelle möglicherweise nicht finden.

Die Berechtigungsfehler können sich auf die gleiche Sache beziehen, oder es kann etwas ganz anderes sein. Schwer zu sagen, ohne die fehlerhaften Befehle zu sehen.

    
alvherre 18.08.2010 17:54
quelle
0

Wenn ich auf meinen Webseiten arbeite, bekomme ich den Fehler die ganze Zeit, weil ich eine Tabelle als mich erstellen werde, auf die der Apache / PHP-Benutzer zugreifen muss, der später eine Verbindung herstellt.

Es gibt eine Tabelle namens pg_class, die Ihre Tabellen definiert. Dies beinhaltet eine Spalte namens relowner. Wenn Sie das mit der richtigen Nummer ändern, erhalten Sie die richtige Eigentümerschaft.

Ich habe Details auf dieser Seite:

Ссылка

Der ALTER OWNER ... könnte eine bessere Lösung sein, die dasselbe tut, obwohl es in älteren Versionen von PostgreSQL nicht gab!

    
Alexis Wilke 13.09.2012 17:07
quelle

Tags und Links