PostgreSQL выдает ошибку: «ОШИБКА: разрешение для отношения имя_таблицы запрещено» - PullRequest
8 голосов
/ 18 августа 2010

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 18 августа 2010

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

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

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

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

2 голосов
/ 18 августа 2010

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

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

0 голосов
/ 13 сентября 2012

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

Существует таблица с именем pg_class, которая определяет ваши таблицы. Это включает в себя столбец с именем relowner. Изменение правильного номера даст вам правильное право собственности.

У меня есть данные на этой странице:

http://linux.m2osw.com/table_owner_in_postgresql

ALTER OWNER ... может быть лучшим решением, которое делает то же самое, хотя в более старых версиях PostgreSQL оно не существовало!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...