Preparando el ambiente
Lo primero es configurar el soporte del locale correspondiente que nos da compatibilidad con Latin1, para ello hay que compilar el soporte de ISO-8959-1 para nuestro idioma configurado (en mi caso Español de Chile). Previamente
hay verificar que el paquete locales este instalado (aunque por defecto debería estar). Para ver una lista de los locales soportados podemos mirar el archivo “/usr/share/l10n/SUPPORTED”, una versión reducida dice:
$cat /usr/share/i18n/SUPPORTED ... es_CL.UTF-8 UTF-8 es_CL ISO-8859-1 es_CO.UTF-8 UTF-8 es_CO ISO-8859-1 es_CR.UTF-8 UTF-8 .....
Por ejemplo para habilitar el soporte iso-8859-1 para Chile ejecutar:
$sudo locale-gen es_CL
Nota1:Luego podemos verificar con el comando “locale -a” que el encoding se haya habilitado.
Instalando postgresql 8.3
Via apt (synaptic) cargamos los paquetes necesarios de postgres y la lista queda,
$apt-get install postgresql-8.3 postgresql-client-8.3 postgresql-common postgresql-plperl-8.3 postgresql-pltcl-8.3;
una vez terminada la instalación de los paquetes detenemos el servicio con "sudo /etc/init.d/postgresql-8.3 stop" o "sudo service postgresql-8.3 stop" (a preferencia del artista).
Por defecto el cluster queda almacenado en el directorio “/var/lib/postgresql/8.3/main”, como hay que regenerar el cluster de base de datos con nuevo locale se puede hacer lo siguiente:
A) Borrar el cluster, pero habrá que regenerar los certificados para el uso de SSL en las conexiones.
B) Renombrar el directorio a “main-old” y al finalizar copiar los certificados auto generados al momento de la instalación.
Como no quiero perder tiempo en regenerar los certificados, renombrare el directorio para tenerlo de respaldo para luego sacar los certificados, entonces ejecuto:
$mv /var/lib/postgresql/8.3/main /var/lib/postgresql/8.3/main-old
luego se debe crear el cluster con initdb (como usuario postgresl!):
$/usr/lib/postgresl/8.3/bin/initdb --locale=es_CL -U postgresql -D /var/lib/postgresql/8.3/main
Esto cargara una serie de scripts y configuraciones si no tenemos ningun error y volvemos a nuestra shell ahora, de lo contrario habra que revisar el error mostrado en pantalla. Ahora bastara copiar los certificados del antiguo directorio “/var/lib/postgresql/8.3/main-old” al nuevo y subir el servicio (service postgresql-8.3 start)
Nota2: Para verificar que nuestro cluster esa usando Latin1 podemos ejecutar psql -l, debería mostrar:
Listado de base de datos
Nombre | Dueño | Codificación
-----------+----------+---------------
postgres | postgres | LATIN1
template0 | postgres | LATIN1
template1 | postgres | LATIN1
(3 filas)
[1]https://help.ubuntu.com/community/LocaleConf
[2]http://www.postgresql.org/docs/8.3/static/locale.html
[3]http://www.nabble.com/Error-al-crear-una-base-en-espa%C3%B1ol…..-td20331659.html
1 Comments.