[firebase-br] Problema de Charset em trigger/Sps

Eduardo Bahiense eduardo em icontroller.com.br
Seg Set 22 13:24:10 -03 2008


Olá Adriano

Certíssimo!

E eu, tão acostumado a usar ferramentas que já pedem o charset, ao usar 
o isql, esqueci de colocar essa valiosa informação.

Um problema a menos para se preocupar!

Brigadaço


Eduardo

Eduardo Bahiense escreveu:
> Oi Adriano
> 
> Obrigado pela rápida resposta.
> 
> Sim, não tinha atentado a esse detalhe, infelizmente, mas rodei po 
> script e coloquei na primeira linha SET NAMES ISO8859_1.
> 
> Vou testar conectando com charset explicito e posto aqui o resultado.
> 
> Obrigado
> 
> Eduardo
> 
> Adriano dos Santos Fernandes escreveu:
>> Eduardo,
>>
>> A "regra" é "sempre use o connection charset correto quando vc for 
>> criar/alterar/ler metadados".
>>
>> Pßscoa é Páscoa inserida em WIN1252 (ou ISO8859-1, que é parecido) e 
>> visualizada sem conversão em DOS850.
>>
>> Ou vc criou a trigger pelo modo gráfico do Windows ou pelo terminal do 
>> Linux configurado com este charset. Em ambos os casos usando NONE como 
>> connection charset.
>>
>>
>> Adriano
>>
>>
>> Eduardo Bahiense escreveu:
>>> Bom dia
>>>
>>> Estou tendo problemas em bases restauradas de backups gerados no linux 
>>> (debian) e restauradas em máquinas windows (XP sp2).
>>>
>>> Temos uma SP que gera os feriados nacionais com Páscoa, carnaval, entre 
>>> outros e alguma triggers auto-geradas que contêm caracteres acentuados.
>>>
>>> O problema foi detectado ao se extrair o metadata pelo IBExpert e 
>>> ocorrer erro de "Can not transliterate between character sets".
>>>
>>> Detalhes:
>>>
>>> 1. Ambas as máquinas utilizam a versão 2.1
>>> 2. As bases foram migradas do 2.0 por bkp/restore
>>> 3. Após o restore foi rodada a rotina de corrigir metadata
>>> 4. Dropamos todas as triggers e sp's e recriamos, na tentativa de resolver
>>> 5. No windows, isso resolve (dropar e recriar)
>>> 6. No linux, pelo ISQL, consegue-se visualizar o metadata da SP 
>>> (RDB$PROCEDURE_SOURCE), porém, pelo IBWebAdmin, o metadata não é exibido.
>>> 7. No Windows também exibe normalmente, só que com caracteres errados 
>>> ('Pßscoa') e se tentar abrir pelo IBExpert ou qualquer outra ferramenta 
>>> adminstrativa, dá o erro citado acima.
>>> 8. Em ambos, a procedure executa normalmente, aplicando os caracteres 
>>> acentuados corretamente. Acredito que a exibição de caracter acentuado 
>>> trocado ocorra no windows por falha do terminal CMD do windows e não 
>>> pelo ISQL em si.
>>> 9. Tanto no windows como no linux, um SELECT * FROM RDB$PROCEDURES 
>>> resulta, para cada registro a mensagem:
>>> ==============================================================================
>>> RDB$PROCEDURE_BLR:
>>> BLOB display set to subtype 1. This BLOB: subtype = 2
>>> ==============================================================================
>>>
>>> É isso. Tudo funciona normal. Nas triggers, tiramos a acentuação pois 
>>> era apenas um comentário "Trigger criada automaticamente, qualquer 
>>> alteração será sobreescrita".
>>>
>>> O problema é extrair o metadata pelo IBExpert. Temos que lembrar de não 
>>> incluir a SP de Feriados, se não ele pára.
>>>
>>> Se alguém puder dar uma luz, será bem-vinda.
>>>
>>>
>>> Abraço
>>>
>>>
>>> Eduardo
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 





Mais detalhes sobre a lista de discussão lista