PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

postgresql createdb e CREATE DATABASE geram um banco de dados não vazio. que garfo?


Resumindo dos documentos template0 é essencialmente um banco de dados de sistema limpo e virgem, enquanto template1 serve como um blueprint para qualquer novo banco de dados criado com o comando createdb ou create database a partir de um prompt do psql (não há diferença efetiva).

É provável que você tenha algumas tabelas à espreita no template1, e é por isso que elas continuam reaparecendo no createdb. Você pode resolver isso descartando template1 e recriando-o a partir de template0.
createdb -T template0 template1 

O banco de dados template1 pode ser extremamente útil. Eu uso muito o Postgis, então tenho todas as funções e tabelas relacionadas a isso instaladas no template1, então qualquer novo banco de dados que eu crio é imediatamente habilitado espacialmente.

EDITAR . Conforme observado nos documentos, mas vale a pena enfatizar, para excluir tempate1 você precisa ter pg_database.datistemplate =false definido.