De la documentación de PostgreSQL:
Otra razón común para copiar la plantilla 0 en lugar de la plantilla 1 es que se pueden especificar nuevas configuraciones de configuración regional y de codificación al copiar la plantilla 0, mientras que una copia de la plantilla 1 debe usar la misma configuración que hace. Esto se debe a que la plantilla 1 puede contener datos específicos de la codificación o de la configuración regional, mientras que se sabe que la plantilla 0 no los contiene.
Solo puede usar template0
para crear una nueva base de datos con diferente codificación y configuración regional:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'zh_CN.UTF-8'
CONNECTION LIMIT = -1
TEMPLATE template0;
Esto funcionará, sin embargo, significa que cualquier cambio que haya realizado en template1
no se aplicará a la base de datos recién creada.
Para cambiar la codificación y la intercalación de template1
primero tienes que borrar template1
y luego crea una nueva plantilla template1
de template0
. Aquí se describe cómo eliminar la base de datos de plantilla. Luego puede crear una nueva base de datos template1
con la codificación/intercalación elegida y márquelo como una plantilla configurando datistemplate=true
(ejemplo):
update pg_database set datistemplate=true where datname='template1';