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