Se você está como estive tempos atrás: irado, revolto, sem esclarecimento de como as coisas funcionam em um excelente (talvez o melhor) SGDB – Postgres e está sofrendo com os males:
1 – Encoding do Sistema Operacional Debian/Ubuntu Ferrados (sim, você brasileiro e a droga do locale te mostrando coisas de americanos, pode uma coisa destas?)
2 – Mudar o Encoding do Postgres.
Vamos ao ataque
Antemão você precisa saber que o seu sistema foi configurado por algum bestão, isto mesmo, o cara instalou o sistema americano sendo brasileiro.
Ter um porstgres que não aceita nem a pau um encoding diferente (padrão dessa tosquisse sempre é UTF8).
Locale do Sistema
Mãos-a-Obra
Todas as configurações e comandos foram executados como usuário root.
Existem vários arquivos que fazem a configuração do locale, precisamos configurar todos eles e depois executar alguns comandos, vamos lá.
Edite o arquivo /etc/environment e altere os campos LANG e LANGUAGE de forma que fiquem iguais ao abaixo, se não existir, acrescente:
LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"
O arquivo /etc/default/locale também deve ser editado e seu conteúdo deve ser:
LANG="pt_BR"
LANGUAGE="pt_BR:pt:en"
Execute o seguinte comando:
# echo "pt_BR pt_BR.ISO-8859-1" >> /etc/locale.alias
Este arquivo grava os aliases para os locales, isso é para facilitar as configurações.
No diretório /var/lib/locales/supported.d alguns arquivos que configuram os locales que serão gerados, por padrão existem três arquivos “en”, “pt” e “local”. Para nosso caso, pode apagar o “en” e o “pt” deixando apenas o “local”.
Feito isso, edite o arquivo local e deixe seu conteúdo como abaixo:
pt_BR.ISO-8859-1 ISO-8859-1
en_US.ISO-8859-1 ISO-8859-1
Muito bem, configuramos os arquivos necessários para a geração dos locales, agora vamos reconfigurar.
Os comandos abaixo fazem o serviço:
# localedef pt_BR -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO-8859-1 -i pt_BR -f ISO-8859-1
# localedef pt_BR.ISO8859-1 -i pt_BR -f ISO-8859-1
# dpkg-reconfigure locales
# locale-gen --purge
# locale-gen
Acredito que apenas um desses três comandos fariam o serviço, mas como eu executei os três quando estava configurando o sistema não vou tirar algum deles, é melhor executar a mais e funcionar do que executar a menos e não funcionar.
Reinicie o sistema e execute o comando abaixo para termos certeza que está tudo conforme o desejado.
# locale
LANG=pt_BR
LANGUAGE=pt_BR:pt:en
LC_CTYPE="pt_BR"
LC_NUMERIC="pt_BR"
LC_TIME="pt_BR"
LC_COLLATE="pt_BR"
LC_MONETARY="pt_BR"
LC_MESSAGES="pt_BR"
LC_PAPER="pt_BR"
LC_NAME="pt_BR"
LC_ADDRESS="pt_BR"
LC_TELEPHONE="pt_BR"
LC_MEASUREMENT="pt_BR"
LC_IDENTIFICATION="pt_BR"
LC_ALL=
# locale -a
C
en_US.iso88591
POSIX
pt_BR.iso88591
Agora sim, está tudo como deveria estar. Nosso sistema já está usando ISO-8859-1.
(ISO-8859-1é LATIN1)
Corrigindo o Encoding do Postgres
Bem, esta é a hora do quebra-quebra, vamos lá:
1 – Crie uma nova instância (cluster) de gestão do Postgres:
sudo pg_createcluster -e LATIN1 -d /caminho/do/novoSGDB 8.3
cluster-8.3-2
Feito isto, a porta que o postgres vai operar neste novo SGDB será 5433
Criando SuperUser para administrar o Postgres
[root@srv:~] # su – postgres
[postgres@srv:~] $ createuser -P
Digite o nome da role a ser adicionada: pglinux
Digite a senha para a nova role:
Digite-a novamente:
A nova role poderá criar um super-usuário? (s/n) s
CREATE ROLE
Quer ver os users?
[postgres@srv:~] $ psql
postgres=# \du
Lista de roles
Nome da role | Super-usuário | Cria role | Cria BD | Conexões | Membro de
————–+—————+———–+———+———–+———–
pglinux | sim | sim | sim | ilimitado |
postgres | sim | sim | sim | ilimitado |
(2 registros)
postgres=# \q
Informações complementares:
http://www.forumdebian.com.br/topico-1583-15.html&sid=64f758c828b395f96e7ae61b4d55897a
http://under-linux.org/7954-configurando-locale-iso-8859-1-no-kubunt-710-gutsy-gibbon.html
isso ai vai me ajudar muito..valeu continua contribuindo…so nao xinga tanto o coitado do linux ou as dificuldades q o soft livre traz..é assim mesmo…muito servico, pouco reconhecimento e remuneracao…mas muita vontade de tornar o mundo mais livre…rsrs
Olá, segui seu tutorial é ocorreu tudo certo até o momento que vou logar no banco de dados. Configurei os arquivos postgres.conf e também pg_hba.conf para obter acesso de outras máquinas da minha rede, mas o que acontece é que a senha para o usuário pglinux é recusada. Já tentei alterar a ROLE, logar com o posgres, mas nada. Você pode me ajudar?
[…] deste post: Corrigindo Maldito encoding do Postgres para poder usar banco de dados latin1 ou outro e mudar o enc… Enviado por: brhunodani@ig.com.br – Categoria: Sem categoria Tags […]