Da documentação do PostgreSQL:
Outro motivo comum para copiar template0 em vez de template1 é que novas configurações de codificação e localidade podem ser especificadas ao copiar template0, enquanto uma cópia de template1 deve usar as mesmas configurações que ela. Isso ocorre porque template1 pode conter dados específicos de codificação ou de localidade, enquanto template0 não contém.
Você pode usar apenas
template0 para criar um novo banco de dados com codificação e localidade diferentes:CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Isso funcionará, mas significa que todas as alterações feitas em
template1 não será aplicado ao banco de dados recém-criado. Para alterar a codificação e o agrupamento de
template1 você deve primeiro excluir template1 e, em seguida, crie um novo modelo template1 de template0 . Como descartar o banco de dados de modelo é descrito aqui. Então você pode criar um novo banco de dados template1 com a codificação/colação escolhida e marque-a como modelo definindo datistemplate=true (exemplo):update pg_database set datistemplate=true where datname='template1';