PostgreSQL-Fehler: "ERROR: permission denied for relation table_name"
Ich versuche zu importieren, schema-dump in PostgreSQL mit 'psql -U Benutzername -W dbname < - Migrationen/- schema.psql', wird das Schema importiert teilweise, aber die Konsole wirft Fehler wie "ERROR: permission denied for relation table_name" und "FEHLER: relation table_name ist nicht vorhanden".
Habe ich die Datenbank erstellt wie diese: "createdb -O username dbname"
Sind es nur 7 Tabellen zu importieren, und es bricht mit nur importieren 3.
Jemand einen Tipp, was zu tun ist?
- Überprüfen Sie die dump-Datei für "ALTER BESITZER ..." oder "SET SESSION AUTHORIZATION..." - Aussagen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn die Sicherung war in der "custom" - format (-Fc), die Sie nutzen könnten pg_restore statt, so können Sie sagen, es gelten nicht Eigentümerwechsel:
Alle Objekte werden erstellt mit "Benutzername" als Besitzer.
Abgesehen haben, versuchen Sie, zu grep aus der ALTER EIGENTÜMER und SET SESSION AUTHORIZATION Befehle in die neue Datei (oder durch senden von grep die Ausgabe per pipe an psql). Diese Befehle sollten immer auf einer einzigen Zeile in der plain-text-Ausgabe-format.
Manchmal ist diese Art von problem wird verursacht, durch groß-und Kleinschreibung Probleme. PostgreSQL Falten in Kleinbuchstaben alle nicht gequotete Identifizierer; wenn die Tabellen erstellt werden, zitierte Namen, die mit Großbuchstaben, später Befehle, die nicht zitieren, die Namen möglicherweise nicht auf den Tisch finden.
Die Erlaubnis Fehler kann in Bezug auf die gleiche Sache, oder es vielleicht etwas ganz anderes. Schwer zu sagen, ohne zu sehen, die fehlerhafte Befehle.
Als ich die Arbeit an meinen Webseiten, bekomme ich diesen Fehler die ganze Zeit, weil ich werde eine Tabelle erstellen wie ich, Tabelle zugegriffen werden muss, die von der Apache/PHP user verbindet später.
Gibt es eine Tabelle mit dem Namen pg_class, die definiert, Ihre Tabellen. Diese enthält eine Spalte namens relowner. Ändern, dass mit der richtigen Anzahl wird Ihnen die richtigen Besitzer.
Habe ich details auf dieser Seite:
http://linux.m2osw.com/table_owner_in_postgresql
ALTER BESITZER ... ist vielleicht eine bessere Lösung, die tut die gleiche Sache, obwohl Sie in älteren Versionen von PostgreSQL es hat nicht vorhanden!