Compartilhar via


PostgreSQL – Criar Banco de Dados com a Codificação: WIN1252 no PostgreSQL (Usando o Linux)

Precisamos (Meu amigo Yuri Nonato (mais conhecido como menino bom) e Eu) criar um Banco de Dados no PostgreSQL (rodando no Linux) com o ENCODING = ‘WIN1252′, mas no momento que estamos criando apresentou o seguinte erro:

“ERROR:  encoding WIN1252 does not match locale pt_BR.UTF-8
DETAIL:  The chosen LC_CTYPE setting requires encoding UTF8″

Então o que fizemos:
– (1) Alteramos as variaveis LC_CTYPE e LC_COLLATE do Banco template0 original
ALTER DATABASE template0 SET LC_CTYPE TO ‘C’
ALTER DATABASE template0 SET LC_COLLATE TO ‘C’;

– (2) Criamos uma base de dados na qual se transformará em template0
CREATE DATABASE template0b TEMPLATE template0 LC_COLLATE ‘C’ LC_CTYPE ‘C’;

– (3) Setamos para false o argumento que diz que o template0 é template padrão.
UPDATE pg_database SET datistemplate = false WHERE datname = ‘template0′;

– (4) Com o update acima , você conseguirá dropar o template0.
DROP DATABASE template0;

– (5) Agora, renomeamos o database criado no passo (2) para template0
ALTER DATABASE template0b RENAME TO template0;

– Setamos novamente o novo template0 como template padrão.
UPDATE pg_database SET datistemplate = true WHERE datname = ‘template0′;

– Criamos agora o banco de dados e conseguimos coloca-lo com a codificação: WIN1252
CREATE DATABASE BancoTeste TEMPLATE template0 OWNER usuario ENCODING ‘WIN1252′;

Valeu galera!

**{ Alex Souza } **

MCP | MCTS: SQL Server 2008, Implementation and Maintenance

Blog Téc: http://pessoalex.wordpress.com/

Linked: http://br.linkedin.com/in/pessoalex

Facebook - SQL Brasil: http://www.facebook.com/SqlServerBrasil

Twitter: AlexSouza_SQL