Conseguir fazer o postgres aceitar latin1

710 views
Skip to first unread message

chrysopa

unread,
May 29, 2010, 8:35:41 AM5/29/10
to Sistema Acadêmico EPROTEC
Pessoal,

estou tentando instalar este novo software. Já havia tentado o SAGU
mas achei a coisa mais confusa do mundo para instalar corretamente.

Agora estou na mesma dificuldade que sempre tenho ao tentar usar o
postgres. Meu sistema é todo UTF8 e o postgres não me deixa criar um
banco de dados em latin1. Seria possível usar o sistema em UTF8 mesmo?
Caso não seja, alguem tem alguma dica para eu conseguir fazer o
postgres aceitar o latin1?

Já tentei as dicas deste site:
http://littleoak.wordpress.com/2008/09/23/corrigindo-maldito-encoding-do-postgres-para-poder-usar-banco-de-dados-latin1-ou-outro-e-mudar-o-encoding-do-sistema-operacional-ubuntu-ou-debian/

Mas ainda da erro: vejam:

[root@www ronaldo]# pg_createcluster -e LATIN1 -d /var/lib/postgresql/
novoSGDB 8.3 cluster-8.3-2
Creating new cluster (configuration: /etc/postgresql/8.3/
cluster-8.3-2, data: /var/lib/postgresql/novoSGDB)...
initdb: codificação não corresponde
A codificação que você escolheu (LATIN1) e a codificação que a
configuração regional
selecionada utiliza (UTF8) não tem correspondência. Isto pode conduzir
a um comportamento inesperado em funções de processamento de cadeia de
caracteres.
Execute novamente o initdb e não especifique uma codificação
explicitamente
ou escolha uma outra combinação.
Error: initdb failed

Meu objetivo é instalar para ser utilizado em um programa de mestrado,
vocês acham que o sistema de vocês serviria para isto.

Valeu
Inte
Ronaldo
Message has been deleted

Wanderson Reis

unread,
May 29, 2010, 9:54:06 AM5/29/10
to Sistema Acadêmico EPROTEC
Olá Ronaldo!

On 29 maio, 09:35, chrysopa <chrys...@gmail.com> wrote:
> Pessoal,
>
> estou tentando instalar este novo software. Já havia tentado o SAGU
> mas achei a coisa mais confusa do mundo para instalar corretamente.
>
> Agora estou na mesma dificuldade que sempre tenho ao tentar usar o
> postgres. Meu sistema é todo UTF8 e o postgres não me deixa criar um
> banco de dados em latin1. Seria possível usar o sistema em UTF8 mesmo?

Se você utilizar o UTF-8 terá muitos problemas com os carecteres
especiais do português e acentos. Isso ocorreu porque os dados
auxiliares que estão na instalação já estão em LATIN1 e principalmente
o sistema com um todo foi programado usando ISO-8859-1. Inclusive é
preciso forçar no apache para entregar o conteúdo do sistema em
ISO-8859-1 (me esqueci de informa isso no LEIAME.TXT). Temos intenção
de migrar para UTF8, mas sem previsão ainda.




> Caso não seja, alguem tem alguma dica para eu conseguir fazer o
> postgres aceitar o latin1?
>
> Já tentei as dicas deste site:http://littleoak.wordpress.com/2008/09/23/corrigindo-maldito-encoding...
>
> Mas ainda da erro: vejam:
>
> [root@www ronaldo]# pg_createcluster -e LATIN1 -d /var/lib/postgresql/
> novoSGDB 8.3 cluster-8.3-2
> Creating new cluster (configuration: /etc/postgresql/8.3/
> cluster-8.3-2, data: /var/lib/postgresql/novoSGDB)...
> initdb: codificação não corresponde
> A codificação que você escolheu (LATIN1) e a codificação que a
> configuração regional
> selecionada utiliza (UTF8) não tem correspondência. Isto pode conduzir
> a um comportamento inesperado em funções de processamento de cadeia de
> caracteres.
> Execute novamente o initdb e não especifique uma codificação
> explicitamente
> ou escolha uma outra combinação.
> Error: initdb failed


Este problema é conhecido e ocorre por que quando se instala o
PostgreSQL (na maioria das distros) ele cria todo seu ambiente inicial
com base no locale do sistema. Mas infelizmente alguns locales não
suportam a criação posterior de bancos de dados com encodings
diferentes do qual foi criado o cluster do PgSQL. Na prática o
encoding utilizado na criação do cluster inicial (initdb) é quem
determina quais encodings serão suportados posteriormente para os
bancos de dados. A melhor opção é setar o locale para "C" antes de
criar o cluster, desta forma será possível criar bancos de dados com
qualquer encoding suportado pelo PgSQL. Siga este roteiro:

1. Remova completamente o PostgreSQL (se for debian like no prompt #:
aptitute purge postgresql-8.3)
2. No mesmo prompt como usuário root (#) seta seu locale com : export
LC_ALL=C && export LANG=C && locale
3. Instala novamente o PosgreSQL, ele vai detectar seu locale e criar
o cluster preparado para banco com qualquer enconding.
4. Depois basta criar o banco especificando o template0 como modelo:
createdb -T template0 -E LATIN1 <nome do banco>


Veja a diferença dos bancos modelos criados inicialmente no cluster
com UTF8 e C, respectivamente:


postgres=# \l
Lista dos bancos de dados
Nome | Dono | Codificação | Colação | Ctype |
Privilégios de acesso
-----------+----------+-------------+-------------+-------------
+-----------------------
postgres | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 |
template0 | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 | =c/
postgres
:
postgres=CTc/postgres
template1 | postgres | UTF8 | pt_BR.UTF-8 | pt_BR.UTF-8 | =c/
postgres
:
postgres=CTc/postgres
(3 linhas)


postgres=# \l
Lista dos bancos de dados
Nome | Dono | Codificação | Colação | Ctype | Privilégios de
acesso
-----------+----------+---------------+-----------+-------
+------------------------
postgres | postgres | SQL_ASCII | C | C |
template0 | postgres | SQL_ASCII | C | C | =c/
postgres
:
postgres=CTc/postgres
template1 | postgres | SQL_ASCII | C | C | =c/
postgres
:
postgres=CTc/postgres
(3 linhas)





>
> Meu objetivo é instalar para ser utilizado em um programa de mestrado,
> vocês acham que o sistema de vocês serviria para isto.

Depende das suas regras, mas deve servir perfeitamente. E se não
atender basta adaptá-lo as suas necessidades.


[ ]'s
Wanderson S. Reis

Wanderson Reis

unread,
May 29, 2010, 10:08:54 AM5/29/10
to Sistema Acadêmico EPROTEC
Para ficar mais completa e correto o banco poderá ser criado assim:

createdb -T template0 -E latin1 --lc-collate=pt_BR.ISO-8859-1 --lc-
ctype=pt_BR.ISO-8859-1 sa-eprotec-latin1


[ ]'s
Wanderson S. Reis
Reply all
Reply to author
Forward
0 new messages