postgresql - utf8 - Cómo cambiar la codificación de la colección de la base de datos de la plantilla.
nombre de configuración regional no válido en_us utf 8 (1)
Desde la documentación de PostgreSQL :
Otra razón común para copiar template0 en lugar de template1 es que la nueva configuración de codificación y configuración regional puede especificarse al copiar template0, mientras que una copia de template1 debe usar la misma configuración que usa. Esto se debe a que template1 puede contener datos específicos de codificación o locales, mientras que template0 se sabe que no lo hace.
Puede usar solo template0
para crear una nueva base de datos con codificación y configuración regional diferentes:
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 la template1
, primero debe eliminar la template1
y luego crear una nueva plantilla de template1
partir de la template0
. A continuación se describe cómo eliminar la base de datos de plantillas. Luego, puede crear una nueva template1
base de template1
con la codificación / intercalación elegida y marcarla como plantilla configurando datistemplate=true
( example ):
update pg_database set datistemplate=true where datname=''template1'';
Quiero construir una nueva base de datos postgreSQL por:
CREATE DATABASE newdb
WITH OWNER = postgres
ENCODING = ''UTF8''
TABLESPACE = pg_default
LC_COLLATE = ''zh_CN.UTF-8''
CONNECTION LIMIT = -1;
y el error es:
ERROR: la nueva intercalación (zh_CN.UTF-8) es incompatible con la intercalación de la base de datos de plantillas (en_US.UTF8)
SUGERENCIA: utilice la misma intercalación que en la base de datos de plantillas o use template0 como plantilla.
¿Cómo cambiar la colección de bases de datos de plantillas?