Отказано в разрешении на создание «pg_catalog.tablename» во время pg_dump для другого компьютера


11

Я пытаюсь сбросить некоторые таблицы с 9.5 бета 2 на сервер 9.4.4. Форма команды, которую я использую, довольно стандартна:

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

Я использую пользователя Postgres, который, как я понимаю, вероятно, не идеален, но, поскольку они оба представляют собой блоки обработки данных dev, которые используют только я, это относится к следующей ошибке. Изначально я получил ошибку

ОШИБКА: нераспознанный параметр конфигурации "row_security"

что ожидается, поскольку эта функция является новой в 9.5, и, да, я понимаю, что не рекомендуется использовать pg_dump между различными версиями Postgres, но, к сожалению, это неизбежно, учитывая, что я столкнулся с очень непонятной ошибкой и мне нужно переместить большую количество статических данных один раз.

Итак, используя этот отвратительный хак для удаления ошибки row_security и включив остановку при первой ошибке:

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

Теперь я получаю:

ОШИБКА: отказано в разрешении на создание "pg_catalog.tablename" ДЕТАЛИ: изменения в системном каталоге в настоящее время запрещены

Хотя может быть нежелательно использовать пользователя / роль Postgres, я понимаю, что не должно быть никаких проблем с разрешениями такого рода. Я открыт для любых предложений, принимая во внимание, что это одноразовая операция и что это устройства разработки данных, не подключенные к каким-либо действующим службам, поэтому целесообразность предпочтительнее, чем идеальные корпоративные политики доступа к данным. Сказав это, было бы хорошо понять, как сделать это правильно и избежать этого в будущем.

Ответы:


13

Это происходит из-за неясного сообщения об ошибке, которое появляется, когда схема, из которой вы выгружаете с помощью pg_dump, не существует в целевой базе данных / машине. Я оставлю этот вопрос, в надежде, что он может помочь кому-то еще.


Со мной тоже случилось, к счастью я нашел это. Просто вручную создал «публичную» схему и все заработало.
Роберт Майкс

@RobertMikes. Рад помочь. Это несколько неясная ошибка.
Джон Пауэлл

Спасибо - к счастью, я нашел это прежде, чем стал слишком вовлеченным в это!
Джеймс Фрай

+1. Этот вопрос меня тоже сбил с толку!
Джей Камминс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.