У дозволі на створення "pg_catalog.tablename" під час націлювання pg_dump на іншу машину відмовлено


11

Я намагаюся скинути деякі таблиці з 9.5 бета-версії на сервер 9.4.4. Форма команди, яку я використовую, є досить стандартною:

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

Я використовую користувача Postgres, який, напевно, я розумію, що це не ідеально, але оскільки це обидва вікна обробки даних, які я використовую лише я, і це стосується помилки, що випливає. Спочатку я отримав помилку

ПОМИЛКА: невпізнаний параметр конфігурації "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. Це питання просто мене і спрацювало!
Jay Cummins
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.