2012-03-09 18 views
6

ho incontrato uno strano problema su una delle nostre macchine.psql console non accettare la localizzazione

È una nuova installazione di Debian Squeeze, con Postgres 8.4.10.

Ho alcune localizzazioni installate sulla macchina, locale -a dà questo:

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

Nella console Linux regolare posso usare la localizzazione svedese (AAO funziona), ma quando entro il psql console I non è possibile utilizzare caratteri localizzati. Non importa come configuro il mio terminale (ho provato praticamente tutte le codifiche a cui riesco a pensare).

Il database funziona correttamente, posso inserire caratteri localizzati creando un file SQL e conservando gli inserimenti. Non è il modo più efficace per farlo ;-)

Non ho avuto questo problema in passato e ho installato un bel po 'di macchine. Qualcuno ha qualche idea di ciò che potrebbe essere la causa di questo?

risposta

7

ti credo' ri sperimentare il problema spiegato in questo bug report: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=608442

Riepilogo: a causa di una licenza ing problema, psql è ora collegato al libedit invece di libreadline, e purtroppo libedit è rotto/incompleta per quanto riguarda i caratteri accentati. Secondo il rapporto, un work-around è quello di lanciare psql con:

LD_PRELOAD=/lib/libreadline.so.5 psql 

o aggiornare il pacchetto postgresql-comune alla versione 114 o superiore. Dal momento che non si trova nel ramo stabile, il modo più semplice potrebbe essere quello di passare ai backport:

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

Controllare la codifica database con \l quindi controllare la codifica del client:

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

Se non corrispondono quindi modificare la codifica del client a quella del database:

set client_encoding=iso88591; 
Problemi correlati