[firebase-br] Erro de Invalid Blob Id em banco de dados migrado

Qatan wanstadnik em gmail.com
Sáb Jul 12 15:54:20 -03 2014


Olá Gladiston,

Obrigado por explicar isso, realmente estava precisando entender como 
funciona esta questão.
Fiz uns testes e fiquei muito contente com os resultados de busca por 
palavras acentuadas no Firebird, perfeito.
Cordialmente,

Qatan


-----Original Message----- 
From: Gladiston Santana
Sent: Friday, July 11, 2014 6:47 PM
To: FireBase
Subject: Re: [firebase-br] Erro de Invalid Blob Id em banco de dados migrado

COLLATE e CHARSET são coisas distintas.
O collate interpreta o conjunto de caracteres e o charset define o mapa de
caracteres.
O collate pt_BR por exemplo, não liga para as acentuações, maiusculas ou
minusculas, e usa uma ordem  A-Z, outros collates podem diferir disso. Se
eu tivesse conhecimento para tal, poderia criar um collate que tratasse
'ph' como 'f' e ignorar sinais diacríticos da nossa língua.
Portanto, voce pode usar o collate que quiser e onde quiser, mas é bem
melhor definir em sua estrutura e não ter que usar o collate na sintaxe
duma query:
select * from clientes where razao_social collate pt_BR like 'a%'

Eu defino collate apenas em campos pesquisaveis como descrição, porque usar
collate também tem o seu preço.

Voce pode usar o collate pt_BR e charset UTF-8 juntos (é o que eu faço),
contudo as possibilidades de collates que podem ser usados dependem do
charset escolhido.

A conversão de charset é que é o problema, o codigo ASCII é tranquilo
converter para qualquer outra coisa, alias a sequencia ASCII->ANSI->UTF é
bem tranquila, o problema é diferir dessa ordem ou reverter a conversão.
Para ilustrar,é como se você fizesse um search/replace por 'cao' para
'cão'  coisas como 'atencao' para 'atencão' ficam bem, mas e as ocorrências
como 'caolho', deve ficar 'cãolho' ?
Por isso, não se faz mudança de charset para outro sem que ocorram algumas
falhas, por isso, tem que ter cuidado com opções como -FIX_FSS_DATA
-FIX_FSS_METADATA que dependendo de como o banco está, a conversão vai
estragar o que já estava certo.

O ideal é usar UTF-8 porque ele contempla quase tudo no universo num
charset unico, não tem porque voltar para o ANSI ou ASCII por falta dum
caracter. No UTF voce começa uma frase em português e depois termina com
caracteres japoneses numa boa. O preço disso é que determinados caracteres
consumirão mais espaço, por isso, alguns ainda preferem o ANSI porque tudo
que vão usar estão alí e consumirá menos espaço.


Em 11 de julho de 2014 12:23, Qatan <wanstadnik em gmail.com> escreveu:

> Aproveitando o gancho... tem como pegar uma base que foi gerada sem
> collate (está com CHARSET = ASCII) e transformar para ISO8959-1 COLLATE
> FR_FR_CI_AI ?
> Aliás, qual o procedimento para converter collate? Exemplo vamos dizer que
> a base está com CHARSET= UTF8) e eu queira mudar para ISO8859-1 /
> FR_FR_CI_AI (ou PT_BR se preferir).
> Obrigado
>
> Qatan
>
>
> -----Original Message----- From: Carlos H. Cantu
> Sent: Friday, July 11, 2014 4:37 PM
> To: FireBase
> Subject: Re: [firebase-br] Erro de Invalid Blob Id em banco de dados
> migrado
>
>
> Os parâmetros -FIX_FSS_DATA e -FIX_FSS_METADATA **só devem** ser usados
> **se** o gbak reportou problemas com o charset! Caso contrário, vc
> poderá "estragar" sua base de dados.
>
> []s
> Carlos H. Cantu
> www.FireBase.com.br - www.firebirdnews.org
> www.warmboot.com.br - blog.firebase.com.br
>
> BD> Olá a Todos!!!!!!
>
> BD> Venho enfrentando problemas em alguns de meus clientes. Os bancos de
> dados
> BD> que fiz a migração do Firebird 1.5 para o Firebird 2.5 estão
> apresentando
> BD> erros de INVALID BLOB ID em algumas tabelas, o estranho é que nas
> tabelas
> BD> onde apresenta este erro não existe campo BLOB.
>
> BD> Estou fazendo algum erro no processo de conversão do banco de dados? 
> Os
> BD> passos que executo para a conversão são:
>
> BD> 1 - Realizo o Backup com o GBAK => gbak -g -b -z -l -v
> BD> localhost:/BD/BANCO.FDB BANCO.FBK -user SYSDBA -pass masterkey
>
> BD> 2 - Desinstalo o Firebird 1.5
>
> BD> 3 - Instalo o Firebird 2.5
>
> BD> 4 - Realizo o Restore com o GBAK => gbak -g -c -z -v BANCO.FBK
> BD> localhost:/BD/BANCO-NOVO.FDB -user SYSDBA -pass 
> masterkey -FIX_FSS_DATA
> BD> ISO8859_1 -FIX_FSS_METADATA ISO8859_1
>
>
> BD> Quando o sistema apresenta este erro de INVALID BLOB ID, eu tenho que
> BD> apagar todas as Triggers e Procedures do banco que está no Firebird
> 2.5 e
> BD> realizo o Backup & Restore.
>
> Backup =>> gbak -g -b -z -l -v localhsot:/BD/BANCO-NOVO.FDB BANCO-NOVO.FBK
> BD> -user SYSDBA -pass masterkey -FIX_FSS_DATA ISO8859_1 -FIX_FSS_METADATA
> BD> ISO8859_1
>
> Restore =>> gbak -g -c -z -v BANCO-NOVO.FBK
> BD> localhost:/BD/BANCO-RESTAURADO.FDB -user SYSDBA -pass masterkey
> BD> -FIX_FSS_DATA ISO8859_1 -FIX_FSS_METADATA ISO8859_1
>
>
> BD> Este é o procedimento todo que realizo. Existe algo de errado ou algo
> que
> BD> possa estar faltando para não ocorrer este erro?
>
> BD> Muito obrigado!!
>
> BD> At.,
>
> BD> Bruno Lage.
> BD> Skype:brunodila
>
>
> ______________________________________________
> 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
>



-- 
--
B em B@BU     iB em M@B.  B em MBBO   MBBMMB em B@BZLr    E@@@@i      r@@@BU
vB em M@O     E em B@Bu   BBBM em 0   G em MMM@N8MBB em ZP5r  B em B@k      8B@@O
OB em B@q   2 em BBBM    B em B@BO   BB em B@B,.:,7B em B@@L uB em B@,    OB em B@.
,@@@B@   @BBB@,    @BBB em 8   M em M@@@     PB em B@B  @@@BN   iB em B@L
  U em B@B2 LB em B@X     B em MBBO   MBBM em B     i em BBB@. 7 em B@Bi  B em B@E
   B@@@BiM em M@B.     @BBM em G   M em MMB@     v@@M em B,  G em B@Z v em B@B.
   7B em B@O em B@B5      B em B@B8   BBBM em B     Z@@@B@   iB@@@2 em B@Br
    NB em M@B em B8       @B em B@8   M em B@B em i:i75 em B@B em r    E@@B em B@Bq
    . em B@@@B@:       B em B@B@   @B@@@B em B@B@@@ME;     .BB em MBB@
     55.ANOS        OMOGBS   PBZGGOOMOO117,        7 em BBB@r
     ==============================================r@@@@F=====
     Gladiston Santana                             8 em B@B,
     Supervisor de TI                             G em B@B7
     Tel.:+551147873122 R:228                    :@B em B0
     Grupo VIDY - SGQ ISO9001 - 55 ANOS          @B em B@.
     Visite nosso site: www·vidy·com·br         BB@@@u
     Visite também : www·expolabor·com·br      GB em B@N
______________________________________________
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