sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo cambiar la codificación de la colección de la base de datos de plantilla

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