Permissão negada para criar "pg_catalog.tablename" durante pg_dump visando outra máquina


11

Estou tentando despejar algumas tabelas de um servidor 9.5 beta 2 para um servidor 9.4.4. A forma do comando que estou usando é bastante padrão:

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

Estou usando o usuário do Postgres, o que eu percebo que provavelmente não é o ideal, mas como essas são as duas caixas de processamento de dados de desenvolvimento que apenas eu uso e são relevantes para o erro a seguir. Inicialmente, recebi o erro

ERRO: parâmetro de configuração não reconhecido "row_security"

o que é esperado, já que esse recurso é novo na versão 9.5 e, sim, eu percebo que não é aconselhável pg_dump entre diferentes versões do Postgres, mas, infelizmente inevitável, já que encontrei um bug muito obscuro e preciso mover um grande quantidade de dados estáticos uma vez.

Portanto, usando esse hack hediondo para remover o erro row_security e ativando o stop no primeiro erro:

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

Agora eu recebo:

ERRO: permissão negada para criar "pg_catalog.tablename" DETALHE: as modificações no catálogo do sistema não são permitidas no momento

Embora possa ser indesejável usar a função / usuário do Postgres, meu entendimento é que não deve haver problemas de permissão dessa natureza. Estou aberto a sugestões, considerando que essa é uma operação pontual e que essas são caixas de desenvolvimento de processamento de dados não conectadas a nenhum serviço ativo, portanto, a conveniência é preferível às políticas ideais de acesso a dados corporativos. Dito isto, seria bom entender como fazer isso corretamente e evitá-lo no futuro.

Respostas:


13

Isso ocorre devido a uma mensagem de erro um tanto obscura que ocorre quando o esquema do qual você está descarregando com pg_dump não existe no banco de dados / máquina de destino. Deixarei esta pergunta, na esperança de que possa ajudar outra pessoa.


Também aconteceu comigo, felizmente encontrei isso. Apenas criou manualmente o esquema 'público' e funcionou.
Robert Mikes

@RobertMikes. Feliz em ajudar. É um erro um tanto obscuro.
John Powell

Obrigado - felizmente eu encontrei isso antes de me envolver demais!
James Fry

+1. Esse problema também me tropeçou!
Jay Cummins
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.