Cambiar el collate C.UTF-8 de base de datos postgres a en_US.utf8

From: mauricio pullabuestan <jmauriciopb(at)yahoo(dot)es>
To: Postgres ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Cambiar el collate C.UTF-8 de base de datos postgres a en_US.utf8
Date: 2021-04-22 17:03:42
Message-ID: 1711763089.8283558.1619111022075@mail.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buen día.

Tengo un servidor de producción con Ubuntu 14.04.06 con postgresql 9.6, al hacer listar las bases de datos tengo:

nombre    codificación        Collate            Ctype
midb                UTF8        es_US.utf8        es_EC.utf8
postgres          UTF8        es_US.utf8        es_EC.utf8
template0        UTF8        es_US.utf8        es_EC.utf8
template1        UTF8        es_US.utf8        es_EC.utf8 

El servidor que hacia de replica tenía la misma configuración, pero se necesito formatear, e instalaron Ubuntu 20.04 debido a ciertas necesidades, al instalar postgresq 9.6 y listar las bases de datos tengo:

nombre    codificación        Collate            Ctype
postgres          UTF8        C_UTF-8        C_UTF-8
template0        UTF8        C_UTF-8        C_UTF-8
template1        UTF8        C_UTF-8        C_UTF-8

Al crear la base de datos:
CREATE DATABASE midb  
  WITH OWNER = postgres
       ENCODING = 'UTF8'
       TABLESPACE = pg_default
       LC_COLLATE = 'en_US.utf8'
       LC_CTYPE = 'es_EC.utf8'
       CONNECTION LIMIT = -1;

Tengo un problema de incompatibilidad.

Instalo postgresql por comando y el collate y Ctype por defecto tienen C_UTF-8
apt-get install -y postgresql-9.6 postgresql-contrib-9.6

Como puedo hacer para que se instale al instalar postgres Collate = es_US.utf8 y Ctype = es_EC.utf8?

Al hacer pruebas de replicación cambie algunas configuraciones en postgresql.conf para que sean compatibles con el servidor de producción y al replicar la copia inicial de la base de datos no reporta problemas, pero al conectarse a la replica da problemas en collate incompatibles.

Googleando un poco encontré
update pg_database set datcollate='POSIX.UTF-8', datctype='POSIX.UTF-8' where  datname='databasename'; 

La aplique a postgres, template0 y template1 y subi un respaldo y lo hace sin problemas.

No estoy seguro que sea la forma correcta de hacer este cambio de collate y Ctype a las bases postgres, template0 y template1, en la noche voy a probar replicar (Hot standby) y ver si da problemas, en su experiencia puede decirme si voy a tener problemas?

Cual sería la forma correcta de solucionar este problema de collate y Ctype?

Saludos 
Mauricio.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2021-04-23 04:11:32 Re: Cambiar el collate C.UTF-8 de base de datos postgres a en_US.utf8
Previous Message Micky Khan 2021-04-22 16:07:06 RE: ERROR: las tablas declaradas WITH OIDS no está soportado