Trashed template1 Postgres

votos
3

Eu estava transando no psql e rebatizou a template0 e template1 antes de perceber seu uso. Agora, eu estou recebendo um permissão negada para copiar banco de dados 'template1 de dentro psql e formar de linha de comando quando tento recriar template1.

Para economizar tempo, há mais alguma coisa que eu preciso saber sobre template1 vis a vis OS permissões de leitura / gravação em / data / base ou concessão em template1 etc.

TIA

Publicado 07/01/2009 em 03:09
fonte usuário
Em outras línguas...                            


3 respostas

votos
2

Como você já tentou "recriar template1"?

O mais fácil seria a de eliminar o esquema "template1" e recriá-lo a partir do esquema "template0". Isso é - se "template0" ainda está lá.

Mais - aqui .

Respondeu 20/02/2009 em 14:42
fonte usuário

votos
6

Você tem que dizer do PostgreSQL que template1é um modelo. Se você não fizer isso, você não terá permissão para copiá-lo se você não for o proprietário:

UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';

Eu tive que ler o código fonte do /src/backend/commands/dbcommands.c(encontrado pelo Google) para entender isso. Diz:

/*
 * Permission check: to copy a DB that's not marked datistemplate, you
 * must be superuser or the owner thereof.
 */
if (!src_istemplate)
{
        if (!pg_database_ownercheck(src_dboid, GetUserId()))
                ereport(ERROR,
                                (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
                                 errmsg("permission denied to copy database \"%s\"",
                                                dbtemplate)));
}

E descobri como fazê-lo em um blog

meu problema semelhante

Respondeu 13/07/2010 em 09:05
fonte usuário

votos
1

Você renomeou os dois bancos de dados? Talvez isso vai fazer o que você precisa:

UPDATE pg_database SET datistemplate = TRUE, datname = 'template0' WHERE datname = 'current_template0_name';

UPDATE pg_database SET datistemplate = TRUE, datname = 'template1' WHERE datname = 'current_template1_name';
Respondeu 16/05/2012 em 21:03
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more