Z dokumentacji PostgreSQL:
Innym częstym powodem kopiowania szablonu0 zamiast szablonu1 jest to, że podczas kopiowania szablonu0 można określić nowe ustawienia kodowania i ustawień regionalnych, podczas gdy kopia szablonu1 musi używać tych samych ustawień, co. Dzieje się tak, ponieważ szablon 1 może zawierać dane specyficzne dla kodowania lub specyficzne dla regionu, podczas gdy szablon 0 nie jest taki.
Możesz użyć tylko template0 aby utworzyć nową bazę danych z innym kodowaniem i lokalizacją:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
To zadziała, jednak oznacza to, że wszelkie zmiany wprowadzone w template1 nie zostaną zastosowane do nowo utworzonej bazy danych.
Aby zmienić kodowanie i sortowanie template1 musisz najpierw usunąć template1 a następnie utwórz nowy szablon template1 z template0 . Jak usunąć bazę danych szablonów, opisano tutaj. Następnie możesz utworzyć nową bazę danych template1 z wybranym kodowaniem/sortowaniem i oznacz go jako szablon, ustawiając datistemplate=true (przykład):
update pg_database set datistemplate=true where datname='template1';