PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

postgresql createdb und CREATE DATABASE ergeben eine nicht leere Datenbank. was die gabel?

Zusammenfassung aus den Dokumenten template0 ist im Wesentlichen eine saubere, jungfräuliche Systemdatenbank, während template1 als Blaupause für jede neue Datenbank dient, die mit dem createdb-Befehl oder create database von einer psql-Eingabeaufforderung erstellt wird (es gibt keinen wirklichen Unterschied).

Es ist wahrscheinlich, dass in template1 einige Tabellen lauern, weshalb sie immer wieder auf createdb auftauchen. Sie können dies lösen, indem Sie Template1 löschen und aus Template0 neu erstellen.

createdb -T template0 template1 

Die Datenbank template1 kann äußerst nützlich sein. Ich verwende Postgis häufig, daher habe ich alle damit verbundenen Funktionen und Tabellen in Vorlage1 installiert, sodass jede neue Datenbank, die ich erstelle, sofort räumlich aktiviert ist.

BEARBEITEN . Wie in den Dokumenten erwähnt, aber es ist hervorzuheben, muss pg_database.datistemplate =false gesetzt sein, um tempate1 zu löschen.