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