A opção relevante é
--locale=locale
para o initdb comando que inicializa seu cluster de banco de dados. Se você não fornecê-lo explicitamente, o padrão será a localidade do sistema. (Você provavelmente executa seu Ubuntu na localidade 'C'.) Leia mais sobre isso no excelente manual aqui .
No PostgreSQL você pode ainda esgueirar-se em um banco de dados com localidade diferente, baseando um novo banco de dados em
template0
em vez do padrão templeate1
. Cito o manual aqui
:Mas prefiro recriar o cluster de banco de dados com a localidade desejada. Muito mais limpo.
Editar:informações sobre localidades disponíveis
Você só pode usar localidades que são fornecidas pelo sistema operacional. Cito o manual aqui :
Veja
locale-gen
em um sistema Unix, se você quiser usar uma localidade que ainda não foi gerada. O importante a entender é que vários locais podem ser instalados em seu sistema operacional, mas apenas um deles pode ser escolhido para parâmetros do sistema como LC_CTYPE
, LC_COLLATE
, etc. Veja a saída de locale
versus locale -a
na casca. Normalmente é o mesmo para todos, definido via LC_ALL
. @David:O que você fez pode ter resolvido seu problema, mas poderia ter sido mais fácil. Além disso, esteja ciente de que a variável de ambiente
LANG
fornece apenas o padrão para todas as configurações de localidade. Se algum deles estiver definido para algo diferente, LANG
será sobrescrito. Definir LC_ALL
para substituir qualquer configuração existente. Aqui está um de muitos sites
na web falando mais sobre isso. Para verificar todas as configurações de localidade atuais de seu banco de dados (cluster), execute em seu banco de dados:
SHOW ALL;
Ou mais especificamente:
SELECT *
FROM pg_settings
WHERE name ~~ 'lc%';