Я нашел решение, добавив
allow_system_table_mods = на
в файл конфигурации PostgreSQL.
Но на PostgreSQL это не работает. Я не могу найти другой метод, который дал бы мне доступ для редактирования этих каталогов.
Есть у кого-нибудь идеи?
Я только что установил PostgresSQL 8.1 из исходный код и у вас нет проблем с редактированием системных каталогов как суперпользователь. Это определяется rolcatupdate
собственность в pg_roles
системный каталог:
Роль может напрямую обновлять системные каталоги. (Даже суперпользователь не может этого сделать, если этот столбец не верен.)
Вы можете проверить это:
SELECT rolcatupdate FROM pg_roles WHERE rolname LIKE 'postgres';
rolcatupdate
--------------
t
(1 row)
Для других ролей у вас есть false
значение, поэтому вы можете (возможно, вам вообще не следует этого делать, так что будьте осторожны) установить на true
:
UPDATE pg_roles SET rolcatupdate = true WHERE rolname LIKE 'roleName'
Второй способ (допустим, у вас нет учетной записи суперпользователя после аварии) - запустить сервер PostgreSQL в однопользовательский режим:
При запуске автономного сервера пользователь сеанса будет настроен на пользователя с идентификатором 1. Этот пользователь на самом деле не обязательно должен существовать, поэтому автономный сервер можно использовать для ручного восстановления после определенных видов случайного повреждения. системные каталоги. Неявные полномочия суперпользователя предоставляются пользователю с ID 1 в автономном режиме.