PostgreSQL выдает ошибку: «ОШИБКА: отказано в разрешении для отношения имя_таблицы»

Я пытаюсь импортировать дамп схемы в PostgreSQL с помощью 'psql -U username -W dbname

Я создал базу данных следующим образом: «createdb -O username dbname»

Есть только 7 таблиц для импорта, и это прерывается при импорте 3 из них.

Кто-нибудь подскажет, что делать?

8
задан dennis.winter 18 August 2010 в 12:52
поделиться

2 ответа

Если резервная копия была в «настраиваемом» формате (-Fc), вы могли бы вместо этого использовать pg_restore, чтобы вы могли указать ему не применять изменения прав собственности:

pg_restore -U username -W --no-owner --dbname=dbname migrations/schema.psql

Все объекты будут созданы с "имя пользователя" как владелец.

Если этого не сделать, попробуйте ввести команды ALTER OWNER и SET SESSION AUTHORIZATION в новый файл (или отправить вывод grep через канал в psql). Эти команды всегда должны быть в одной строке в формате вывода обычного текста.

3
ответ дан 5 December 2019 в 23:12
поделиться

Иногда проблема такого рода возникает из-за чувствительности к регистру. PostgreSQL переводит все идентификаторы без кавычек в нижний регистр; если таблицы созданы с именами в кавычках, содержащими прописные буквы, последующие команды, которые не заключают имена в кавычки, могут не найти таблицу.

Ошибки разрешения могут быть связаны с одним и тем же, или это может быть что-то совсем другое. Трудно сказать, не увидев ошибочных команд.

2
ответ дан 5 December 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: