От документацията на PostgreSQL:
Друга често срещана причина за копиране на template0 вместо template1 е, че нови настройки за кодиране и локал могат да бъдат посочени при копиране на template0, докато копието на template1 трябва да използва същите настройки, които прави. Това е така, защото template1 може да съдържа специфични за кодирането или специфични за локал данни, докато template0 е известно, че не.
Можете да използвате само template0
за създаване на нова база данни с различно кодиране и локал:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Това ще работи, но това означава, че всички промени, които сте направили в template1
няма да се прилага към новосъздадената база данни.
За да промените кодирането и сортирането на template1
първо трябва да изтриете template1
и след това създайте нов шаблон template1
от template0
. Как да премахнете шаблонна база данни е описано тук. След това можете да създадете нова база данни template1
с избрано кодиране/съпоставяне и го маркирайте като шаблон, като зададете datistemplate=true
(пример):
update pg_database set datistemplate=true where datname='template1';