[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