[firebase-br] Verificar erros no banco de dados

Carlos H. Cantu listas em warmboot.com.br
Qui Abr 9 17:46:15 -03 2020


SS> Tem certeza que conseguiu restaurar no FB 3.0 um backup feito por um FB 2.5?
SS> Quando eu tentei fazer isso, fiquei mega surpreso ao ver uma mensagem de
SS> erro informando que o FB 3.0 não suportava o formato daquele backup feito
SS> pelo 2.5.

Você deve ter feito alguma coisa errada, pois a única forma de migrar
uma base de versões anteriores pro 3.0 é fazendo um backup no 2.x e
restaurante no 3.0. Já fiz inúmeras vezes, e sempre funcionou.

Talvez sua base 2.5 estivesse com corrupção lógica, possivelmente
devido a manipulação direta nas tabelas de sistema, coisa que não é
mais permitida no FB 3.

SS> Quando eu comecei a verificar isso, notei que no FB 3.0, o fato de você
SS> informar que uma coluna é obrigatória (NOT NULL) automaticamente cria uma
SS> CONSTRAINT de NOT NULL para aquela coluna, o que não existia antes do FB
SS> 3.0, e o nome que o FB 3.0 estava criando para essas novas constraints (que
SS> não existiam) estava conflitando com os nomes de outras constraints que iam
SS> ser criadas mais à frente dentro do mesmo script.

Você usou o que pra extrair o script? Há uma chance que o script
criado pela "ferramenta" que você usou estivesse com problemas ou fora
do padrão.

Eu extraí o script do meu ERP (FB 2.5), contendo dezenas de tabelas,
procedures, triggers, etc. e rodou sem problemas no FB 3.


SS> Mestre Cantu, por favor corrija-me se eu estiver falando besteira, mas que
SS> eu saiba, até o FB 2.5, ele era feito em C puro, sem orientação a objetos,
SS> e o FB 3.0 foi reescrito em C++, e como é C++, tem suporte a orientação a
SS> objetos, inclusive contando com um objeto específico para funcionar como
SS> string (a classe std::string).

O único código em C puro era do InterBase 6. Desde a versão 1.0 do FB,
o uso de C++ vem aumentando cada vez mais. O FB 2.5 já tem muito C++
no código.

Talvez a sua confusão seja porque o FB 3 introduziu uma API totalmente
orientada a objetos usando C++

PS: O FB 4 não acessa BDs com ODS menor que 12. Isso foi necessário
devido a quantidade de alterações feitas na engine da versão 3. Para
menter uma retrocompatibilidade com ODS anteriores seria um trabalho
monstruoso.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br





Mais detalhes sobre a lista de discussão lista