2012-03-09 18 views
6

He encontrado un problema extraño en una de nuestras máquinas.Consola psql que no acepta la localización

Es una nueva instalación de Debian Squeeze, con Postgres 8.4.10.

tengo unas pocas localizaciones instalados en la máquina, locale -a da esto:

C 
en_US 
en_US.iso88591 
en_US.utf8 
POSIX 
swedish 
sv_SE 
sv_SE.iso88591 
sv_SE.utf8 

En la consola de Linux regulares puedo usar la localización sueco (AAO funciona), pero cuando entro en la consola psql I no puede usar caracteres localizados No importa cómo configuro mi terminal (intenté casi cualquier codificación que se me ocurra).

La base de datos en sí funciona bien, puedo ingresar caracteres localizados haciendo un archivo SQL y mantener los insertos allí. Simplemente no es la manera más eficiente de hacerlo ;-)

No he tenido este problema antes, y he instalado bastantes máquinas. ¿Alguien tiene alguna idea de lo que podría ser la causa de esto?

Respuesta

7

te creo' Estoy experimentando el problema explicado en este informe de error: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608442

Resumen: debido a una licencia Problema de búsqueda, psql ahora está vinculado a libedit en lugar de libreadline, y desafortunadamente libedit está roto/incompleto con respecto a los caracteres acentuados. De acuerdo con el informe, un trabajo en torno es poner en marcha con psql:

LD_PRELOAD=/lib/libreadline.so.5 psql 

o actualizar el paquete postgresql-común a la versión 114 o superior. Como no está en la rama estable, la manera más fácil puede ser cambiar a los puertos de retroceso:

# aptitude -t squeeze-backports install postgresql-common 
0

Comprobar la codificación de la base de datos con \l a continuación, comprobar la codificación del cliente:

=> show client_encoding; 
client_encoding 
----------------- 
UTF8 
(1 row) 

Si no coinciden, cambiar la codificación del cliente a la de la base de datos:

set client_encoding=iso88591; 
Cuestiones relacionadas