[firebase-br] Migrando de 2.03 para 2.1.1

Adriano dos Santos Fernandes adrianosf em uol.com.br
Qui Out 30 08:09:18 -03 2008


Welkson,

O script atualiza as tabelas de sistema, e não as suas tabelas. Por isso 
também não tem relação com os charsets NONE das suas tabelas.

O erro "Cannot update trigger used by a CHECK Constraint" provavelmente 
é porque vc não atualizou (backup/restore) antes o banco para o FB 2.1.

O erro na RDB$CHECK_METADATA indica que seus metadados estão com 
problema e que é melhor vc continuar pra corrigir.

O parâmetro para a RDB$FIX_METADATA não deve ser NONE. O valor depende 
de como vc criou seus metadados. Se foi no modo GUI do Windows, 
provavelmente será WIN1252. Se foi pelo ISQL, DOS850.

Observação: depois de corrigir sempre use um character set na conexão, 
pois se vc misturar metadados corretos e incorretos vai ser difícil de 
corrigir no futuro.


Adriano


Welkson Renny de Medeiros escreveu:
> Pessoal,
> 
> Preparei uma máquina para testar a nova versão do Firebird... instalei a 
> versão 2.1 e vi que ele alerta sobre uns scripts que ficam na pasta 
> \misc\upgrade\metadata.
> 
> Iniciei o serviço, conectei ao banco, rodei o script para criação do 
> metadata_charset_create.sql, depois rodei um select * from 
> rdb$check_metadata
> 
> Surge vários registros... quando começo a descer a rolagem aparece o erro:
> 
> Error Message:
> ----------------------------------------
> Cannot transliterate character between character sets.
> Cannot transliterate character between character sets.
> At procedure 'RDB$FIX_METADATA'
> At procedure 'RDB$CHECK_METADATA'.
> 
> Os campos, procedures, triggers, tudo está charset NONE no meu banco. 
> Alguma sugestão para resolver?
> 
> Tentei rodar o seguinte comando:
> select * from rdb$fix_metadata('NONE'); //tentei também com UTF8
> 
> Aparece a mensagem:
> Error Message:
> ----------------------------------------
> Row not found for fetch, update or delete, or the result of a query is 
> an empty table.
> attempted retrieval of more segments than exist.
> action cancelled by trigger (1) to preserve data integrity.
> Cannot update trigger used by a CHECK Constraint.
> At procedure 'RDB$FIX_METADATA'.
> 
> Analisando o código da procedure RDB$FIX_METADATA vejo que em vários 
> momentos ela roda um UPDATE nas tabelas... todas minhas tabelas tem 
> TRIGGERS de LOG... (insert, update, delete)...
> 
> Resumindo: o que ocorre se eu não rodar essas procedures no banco em 
> produção? quais as broncas?
> 
> Obrigado a todos pela atenção.
> 





Mais detalhes sobre a lista de discussão lista