18 de set de 2012

PostgreSQL - Recriando template1

Se seu template1 foi corrompido ou deletado de alguma forma, você poderá recriá-lo a partir do template0. Mas há um problema: o template1 é um banco de dados modelo (template database).

A solução rápida para isso é conectar como superusuário, setar template1 como não sendo um banco de dados modelo, eliminar e recriar o template1 a partir do template0:


$ psql -U postgres postgres
postgres=# update pg_database set datistemplate = false where datname='template1';
UPDATE 1
postgres=# drop database template1;
DROP DATABASE
postgres=# create database template1 template=template0;
CREATE DATABASE
postgres=# update pg_database set datistemplate = true where datname='template1';
UPDATE 1
postgres=#
Pronto!

Opcional:

Também encontrei um artigo antigo, mas não antiquado, por Josh Berkus sobre praticamente o mesmo problema, explicando de forma mais completa, no Wiki do PostgreSQL.


Fonte: http://pgsql.inb4.se/2009/april/rebuild-template1.html