Como editar catálogos do sistema no PostgreSQL 8.1?

2

Encontrei alguma solução adicionando

allow_system_table_mods = on

para o arquivo de configuração do PostgreSQL.

Mas no PostgreSQL isso não funciona. Não consigo encontrar nenhum outro método que me dê acesso para editar esses catálogos.

Alguém tem alguma ideia?

    
por Svisstack 11.08.2011 / 16:43

1 resposta

2

Acabei de instalar o PostgresSQL 8.1 do código-fonte e não tenho nenhum problema com a edição de catálogos do sistema como superusuário . É determinado pela propriedade rolcatupdate no pg_roles catálogo do sistema:

Role may update system catalogs directly. (Even a superuser may not do this unless this column is true.)

Você pode verificar isso por:

SELECT rolcatupdate FROM pg_roles WHERE rolname LIKE 'postgres';
 rolcatupdate 
--------------
 t
(1 row)

Para outras funções, você tem false value, então você pode (provavelmente você não deveria fazer isso, então tenha cuidado) definido como true :

UPDATE pg_roles SET rolcatupdate = true WHERE rolname LIKE 'roleName'

Segunda maneira (digamos que você não tenha nenhum cargo de superusuário após algum acidente) é rodar o servidor PostgreSQL em modo de usuário único :

When running a stand-alone server, the session user will be set to the user with ID 1. This user does not actually have to exist, so a stand-alone server can be used to manually recover from certain kinds of accidental damage to the system catalogs. Implicit superuser powers are granted to the user with ID 1 in stand-alone mode.

    
por 12.08.2011 / 10:01

Tags