quinta-feira, 17 de março de 2011

Criar banco de dados Postgre com encoding Latin1 em um sistema UTF-8

Estes dias eu estava passando por uma pequena dor de cabeça. Meu sistema operacional que uso para desenvolvimento (Ubuntu 10.10) está configurado com o encoding utf-8 e o locale para pt_BR. Acontece que eu estava tentando usar o pgAdmin III para criar um banco de dados com encoding Latin1 (o nosso famoso ISO-8859-1). Eu abria o pgAdmin, mandava criar um novo banco de dados, dava um nome para ele, na opção codificação escolhia LATIN1, dava ok, e pimba! Recebia a seguinte mensagem:
Um erro ocorreu:

ERRO:  codificação LATIN1 não corresponde a configuração regional pt_BR.utf8
DETALHE:  A definição de LC_TYPE escolhida requer codificação UTF8.


Eu recitava uma meia-dúzia de nomes feitos mas não sabia o que fazer. Eis que a luz veio da singela resposta deste cara no StackOverflow. Fui para o terminal, loguei como o usuário postgres, e executei o comando da seguinte forma:
createdb -T template0 NOME_BANCO -E LATIN1 --locale=pt_BR
E pimba novamente! (Desta vez um pimba bom). Funcionou mesmo, tenho um banco chamado NOME_BANCO com encoding LATIN1 em meio a outros bancos com encoding UTF-8.

StackOverflow salva o dia novamente.