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

So ändern Sie die Codierung der Vorlagendatenbanksammlung

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';