Cambiar Encoding UTF8 a Latin1 PostgreSQL 8.3.x

Se toma como parámetros la distribución GNU/Linux Ubuntu server 8.10


1) Verificar el conjunto de cacteres instalados si esta el ISO-8859-1.

   # locale -a

2 ) Si no se encuentra agregarlo en /var/lib/locales/supported.d/es

   ...
   es_BO.ISO-8859-1 ISO-8859-1

3) Generar la nueva lista de caracteres.

   # locale-gen

4 Volver a construir el cluster de la base de datos. OJO sacar backups.

   # /etc/init.d/postgresql-8.3 stop
   # cd /var/lib/postgresql/8.3/ 

Movemos la carpeta main para volver si se tiene problemas.

   # mv main main.old

Creamos la carpeta main y le asignamos permisos para usuario postgres.

   # mkdir main
   # chown -R postgres.postgres main

Generamos el cluster.

   # su postgres -c '/usr/lib/postgresql/8.3/bin/initdb -U postgres --locale=es_BO.ISO88591 --encoding=Latin1 --lc-collate=Latin1 -D /var/lib/postgresql/8.3/main'

5) Creamos enlaces simbólicos para los siguientes archivos, detro de la carpeta main.

   # cd main
   # ln -s /etc/postgresql-common/root.crt root.crt
   # ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
   # ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key

6) Iniciamos la base de datos para tener funcionando con la coficación Latin1.

   # /etc/init.d/postgresql-8.3 start

Éxitos.

Basado en: http://darkavngr.blogspot.com/2007/06/pasos-seguir-para-modificar-el-charset.html

Nota1: Siempre es bueno los comentarios y uno que llego es una referencia que escribio Alvaro Herrera.

  Se me olvidó comentar que este es un cambio en 8.3: anteriormente, el
  servidor te permitía escoger una codificación que no fuera coincidente
  con la configuración regional.  Esto traía muchos dolores de cabeza, por
  lo que la nueva versión hace chequeos más estrictos al respecto.  Por
  este motivo, ya no puedes mezclar (bajo un mismo postmaster) bases de
  datos Latin1 con UTF8.
  
  La alternativa es que escojas las configuración regionales C o POSIX,
  que pueden funcionar con cualquier codificación.
  -- 
  Alvaro Herrera

http://archives.postgresql.org/pgsql-es-ayuda/2008-02/msg00431.php

Nota2: Me agrada mucho la noticia de que en la versión 8.4 se podra crear BD con diferente encoding como se realizaba con la 8.0 y 8.1, supongo que esta medida fue instituida por seguridad en las versiones 8.2.8.3. Aclarando este tema aqui esta A. H.

  No es "igual que 8.0 y 8.1".  Lo que pasa es que en versiones anteriores
  era inseguro y no funcionaba bien, por eso se arregló la restricción.
  En 8.4 lo que se hizo fue corregir la implementación para que funcione
  bien.
  --
  Alvaro Herrera
 
postgresqlutf8tolatin1.txt · Última modificación: 2009/05/05 16:51 por jared
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki

Modificado por la:
Comunidad de Software Libre y GNU/Linux Bolivia
www.softwarelibre.org.bo