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