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