Odmowa zgody na utworzenie „pg_catalog.tablename” podczas pg_dump targetowania na inny komputer

11

Próbuję zrzucić niektóre tabele z wersji 9.5 beta 2 na serwer 9.4.4. Forma polecenia, którego używam, jest dość standardowa:

pg_dump -t table dbname | psql -h hostname -d dbname

Korzystam z użytkownika Postgres, co, jak sądzę, prawdopodobnie nie jest idealne, ale ponieważ są to oba pola przetwarzania danych deweloperskich, z których tylko ja korzystam i jest to związane z następującym błędem. Początkowo dostałem błąd

BŁĄD: nierozpoznany parametr konfiguracyjny „bezpieczeństwo_wiersza”

co jest oczekiwane, ponieważ ta funkcja jest nowa w wersji 9.5, i tak, zdaję sobie sprawę, że nie jest wskazane pg_dump między różnymi wersjami Postgres, ale, niestety, nieuniknione, biorąc pod uwagę, że trafiłem na bardzo niejasny błąd i muszę przenieść duży ilość danych statycznych jeden raz.

Tak więc, używając tego ohydnego włamania do usunięcia błędu row_security, i włączając stop przy pierwszym błędzie:

pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname

Teraz dostaję:

BŁĄD: odmowa utworzenia „pg_catalog.tablename” SZCZEGÓŁ: Modyfikacje katalogu systemowego są obecnie niedozwolone

Chociaż korzystanie z roli / użytkownika Postgres może być niepożądane, rozumiem, że nie powinno być żadnych problemów z uprawnieniami tego rodzaju. Jestem otwarty na wszelkie sugestie, mając na uwadze, że jest to jednorazowa operacja i że są to urządzenia przetwarzające dane niepowiązane z żadnymi usługami na żywo, więc celowość jest lepsza niż idealna polityka dostępu do danych korporacyjnych. Powiedziawszy to, dobrze byłoby zrozumieć, jak to zrobić właściwie i uniknąć tego w przyszłości.

John Powell
źródło

Odpowiedzi:

13

Okazuje się, że jest to spowodowane niejasnym komunikatem o błędzie, który pojawia się, gdy schemat, z którego wyrzucasz pg_dump, nie istnieje na docelowej bazie danych / komputerze. Pozostawię to pytanie, mając nadzieję, że może pomóc komuś innemu.

John Powell
źródło
Zdarzyło mi się też, na szczęście to znalazłem. Właśnie ręcznie utworzyłem schemat „publiczny” i zadziałał.
Robert Mikes
@RobertMikes. Miło, że mogłem pomóc. Jest to nieco niejasny błąd.
John Powell,
Dziękuję - na szczęście znalazłem to, zanim zbytnio się w to zaangażowałem!
James Fry
+1. Ten problem też mnie potknął!
Jay Cummins,