Ich versuche, einige Tabellen von einer 9.5 Beta 2 auf einen 9.4.4 Server zu sichern. Die Form des Befehls, den ich verwende, ist der Standard:
pg_dump -t table dbname | psql -h hostname -d dbname
Ich verwende den Postgres-Benutzer, von dem ich weiß, dass er wahrscheinlich nicht ideal ist, aber da dies beide Entwicklungsdatenverarbeitungsboxen sind, die nur ich verwende, ist er für den folgenden Fehler relevant. Anfangs habe ich den Fehler bekommen
FEHLER: nicht erkannter Konfigurationsparameter "row_security"
Dies wird erwartet, da diese Funktion in 9.5 neu ist, und ja, mir ist klar, dass es nicht ratsam ist, zwischen verschiedenen Postgres-Versionen zu pg_dump, aber leider unvermeidlich, da ich einen sehr obskuren Fehler gefunden habe und einen großen verschieben muss Menge der statischen Daten einmal.
Verwenden Sie diesen abscheulichen Hack, um den Fehler row_security zu entfernen, und aktivieren Sie stop beim ersten Fehler:
pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname
Ich bekomme jetzt:
FEHLER: Berechtigung zum Erstellen von "pg_catalog.tabellenname" verweigert. DETAIL: Systemkatalogänderungen sind derzeit nicht zulässig
Obwohl es möglicherweise unerwünscht ist, den Postgres-Benutzer / die Postgres-Rolle zu verwenden, sollte meines Erachtens keine Berechtigungsprobleme dieser Art vorliegen. Ich bin offen für Vorschläge, die berücksichtigen, dass dies eine einmalige Operation ist und dass es sich um Datenverarbeitungsentwicklungsboxen handelt, die nicht mit Live-Diensten verbunden sind. Daher wird Zweckmäßigkeit gegenüber idealen Unternehmensdatenzugriffsrichtlinien bevorzugt. Trotzdem wäre es gut zu verstehen, wie man das richtig macht und dies in Zukunft vermeidet.
quelle