Мусорный Postgres template1 - PullRequest
3 голосов
/ 07 января 2009

Я облажался в psql и переименовал template0 и template1, прежде чем понял их использование. Теперь я получаю «разрешение на копирование базы данных« template1 »изнутри psql и командной строки формы при попытке воссоздать template1.

»

Чтобы сэкономить время, есть ли еще что-то, что мне нужно знать о template1, в сравнении с правами на чтение / запись в ОС в / data / base или предоставлением для template1 и т. Д.

ТИА

Ответы [ 3 ]

6 голосов
/ 13 июля 2010

Вы должны сообщить PostGreSQL, что template1 - это шаблон. Если вы этого не сделаете, вам не разрешат скопировать его, если вы не являетесь владельцем:

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

Я должен был прочитать исходный код /src/backend/commands/dbcommands.c (найденный Google), чтобы понять это. Там написано:

/*
 * 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)));
}

И я нашел, как это сделать в блоге

моя похожая проблема

2 голосов
/ 20 февраля 2009

Как вы пытались «воссоздать template1»?

Проще всего было бы удалить схему "template1" и воссоздать ее из схемы "template0". То есть - если "template0" все еще там.

Подробнее - здесь .

1 голос
/ 17 мая 2012

Вы переименовали две базы данных? Может быть, это будет делать то, что вам нужно:

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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...