Я намагаюся скинути деякі таблиці з 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 може бути небажаним, я розумію, що таких дозволів не повинно бути. Я відкритий до будь-яких пропозицій, маючи на увазі, що це одноразова операція і що це скриньки для обробки даних, не пов'язані з жодними послугами в реальному часі, тому доцільність віддається перевазі ідеальної політики корпоративного доступу до даних. Сказавши це, було б добре зрозуміти, як це зробити правильно, і уникнути цього в майбутньому.