Вы должны сообщить 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)));
}
И я нашел, как это сделать в блоге
моя похожая проблема