L'opzione pertinente è --locale=locale
a initdb comando che inizializza il cluster di database. Se non lo fornisci in modo esplicito, l'impostazione predefinita è la locale del sistema. (Probabilmente esegui Ubuntu nella locale 'C'.)
Leggi maggiori informazioni nell'eccellente manuale qui .
In PostgreSQL puoi ancora intrufolarsi in un database con locale diverso basando un nuovo database su template0
invece del predefinito templeate1
. Cito il manuale qui
:
Ma preferirei ricreare il cluster di database con la locale desiderata. Molto più pulito.
Modifica:informazioni sulle localizzazioni disponibili
Puoi solo utilizzare locali forniti dal sistema operativo. Cito il manuale qui :
Guarda locale-gen
in un sistema Unix, se si desidera utilizzare una locale che non è stata ancora generata. La cosa importante da capire è che è possibile installare più locali nel sistema operativo, ma solo uno può essere selezionato per parametri di sistema come LC_CTYPE
, LC_COLLATE
, ecc. Guarda l'output di locale
rispetto a locale -a
nel guscio. Solitamente è uguale per tutti, impostabile tramite LC_ALL
.
@David:quello che hai fatto potrebbe aver risolto il tuo problema, ma avresti potuto farlo più facilmente. Inoltre, tieni presente che la variabile di ambiente LANG
fornisce solo il predefinito per tutte le impostazioni locali. Se qualcuno di essi è impostato su qualcosa di diverso, LANG
sarà sovrascritto. Imposta LC_ALL
per sovrascrivere qualsiasi impostazione esistente. Ecco uno di molti siti
nel Web per dirti di più a riguardo.
Per controllare tutte le impostazioni locali correnti del tuo database (cluster), esegui nel tuo database:
SHOW ALL;
O più precisamente:
SELECT *
FROM pg_settings
WHERE name ~~ 'lc%';