Aus der PostgreSQL-Dokumentation:
Ein weiterer häufiger Grund für das Kopieren von template0 anstelle von template1 ist, dass beim Kopieren von template0 neue Codierungs- und Gebietsschemaeinstellungen angegeben werden können, während eine Kopie von template1 dieselben Einstellungen verwenden muss wie sie. Dies liegt daran, dass template1 möglicherweise codierungsspezifische oder gebietsschemaspezifische Daten enthält, während template0 dies bekanntermaßen nicht tut.
Sie können nur template0
verwenden um eine neue Datenbank mit anderer Kodierung und Gebietsschema zu erstellen:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Dies wird funktionieren, aber es bedeutet, dass alle Änderungen, die Sie an template1
vorgenommen haben, gelöscht werden wird nicht auf die neu erstellte Datenbank angewendet.
Zum Ändern der Kodierung und Sortierung von template1
Sie müssen zuerst template1
löschen und erstellen Sie dann eine neue Vorlage template1
aus template0
. Wie Sie die Vorlagendatenbank löschen, wird hier beschrieben. Dann können Sie eine neue Datenbank template1
erstellen mit gewählter Codierung/Sortierung und markieren Sie es als Vorlage, indem Sie datistemplate=true
setzen (Beispiel):
update pg_database set datistemplate=true where datname='template1';