[firebase-br] Falha ao restaurar backup

Magno Machado magnomp.gprs em gmail.com
Qui Mar 13 14:06:54 -03 2008


>O Cantu ja levantou a hipotese que eu queria, que era a de manipulação das
>tabelas de sistema para alterar o flag not null de um campo.
Sim, mas outra hipotese que ele levantou foi a de corrupção, que alias eu 
acho mais provavel já que, como eu disse anteriormente, ao menos um dos 
campos em questão eu tenho certeza que sempre foi not null.

>Se você ainda tiver acesso ao banco, tenta dar um update nos campos que
>estiverem nulos.
Hehe, aqui que está o problema.
Eu encontrei tres tabelas com registros realmente inconsistentes, mas o 
problema que estou tendo é em uma tabela que definitivamente NÃO tem 
registros inconsistentes. O campo que o gbak acusa como nulo está preenchido 
em todos os registros desta tabela.

Vou tentar recriar este banco a partir de um script, ao invés de através de 
backup/restore, talvez assim eu tenha sucesso

"Alexandre Sousa" <dave.malkavian em gmail.com> 
escreveu na mensagem news:004501c88529$937d60c0$6e01a8c0 em ITT...
OK.
O Cantu ja levantou a hipotese que eu queria, que era a de manipulação das
tabelas de sistema para alterar o flag not null de um campo.

Se você ainda tiver acesso ao banco, tenta dar um update nos campos que
estiverem nulos.

Depois faz o backup e restore.

Att.
Alexandre Sousa Dantas
----- Original Message ----- 
From: "Magno Machado" <magnomp.gprs em gmail.com>
To: <lista em firebase.com.br>
Sent: Thursday, March 13, 2008 11:50 AM
Subject: Re: [firebase-br] Falha ao restaurar backup


>Ele ja foi null alguma vez?
Acredito que não, mas não posso te dar certeza..

"Alexandre Sousa" <dave.malkavian em gmail.com>
escreveu na mensagem news:003901c88517$0702dfb0$6e01a8c0 em ITT...
Ops, foi mal...
Ele ja foi null alguma vez?

hehehe


----- Original Message ----- 
From: "Magno Machado" <magnomp.gprs em gmail.com>
To: <lista em firebase.com.br>
Sent: Thursday, March 13, 2008 11:22 AM
Subject: Re: [firebase-br] Falha ao restaurar backup


>Tente executar o restore utilizando a opção -v.
>
>O gbak mostra a tabela que ele está restaurando no momento. Talvez você
>consiga alguma informação extra.
Ótimo, agora sim, descobri qual tabela era.
Mas todos os registros da tabela estão com este campo preenchido.

>Uma pergunta: esse campo ja foi not null alguma vez na historia do seu
>banco?
Bom, ele É not null agora.

"Alexandre Sousa" <dave.malkavian em gmail.com>
escreveu na mensagem news:002f01c88513$ed58ed00$6e01a8c0 em ITT...
Ola,

Tente executar o restore utilizando a opção -v.

O gbak mostra a tabela que ele está restaurando no momento. Talvez você
consiga alguma informação extra.

Uma pergunta: esse campo ja foi not null alguma vez na historia do seu
banco?

Esperto ter ajudado

Alexandre Sousa

----- Original Message ----- 
From: "Magno Machado" <magnomp.gprs em gmail.com>
To: <lista em firebase.com.br>
Sent: Thursday, March 13, 2008 11:02 AM
Subject: Re: [firebase-br] Falha ao restaurar backup


> Nao tem jeito, vai ter que preencher o campo, se nao nao vai funcionar, o
> que tu pode fazer eh buscar o campo que esta como nulo.
Desculpe, talvez eu não tenha sido muito claro, mas eu disse no meu post
inicial:
"Então olhei em todas as tabelas que têm o campo informado na mensagem de
erro (...) e nenhuma tabela possui aquele campo definido como not null e
ainda um registro que foi gravado com null."
Em outras palavras, já fiz essa busca e não encontrei o registro
inconsistente.
De qualquer forma, executei a sua procedure e encontrei três tabelas com o
mesmo problema, mas todos os casos são envolvendo campos que não são aquele
que está causando o erro na restauração do backup

>Nao acho que as mensagens de erro nao sejam explicativas, elas querem dizer
>muito ;)
Olha a mensagem:
gbak: ERROR: validation error for column CODPRO, value "*** null ***"

CODPRO? Tá, mas em qual tabela? Tenho 36 tabelas com este campo.
Isso porque essa mensagem ainda é um pouco útil, mas frequentemente recebo
algumas que são absolutamente inuteis, porém isso já é tema para outra
discussão.

"OseasTormen" <mentux em gmail.com> escreveu na
mensagem news:frba6m$cri$1 em ger.gmane.org...
> Nao tem jeito, vai ter que preencher o campo, se nao nao vai funcionar, o
> que tu pode fazer eh buscar o campo que esta como nulo.
>
> Nao acho que as mensagens de erro nao sejam explicativas, elas querem
> dizer muito ;)
>
> se quiser tenho uma procedure que varre o banco em busca de
> inconsistencias com not null
>
> segue
>
> *****************************************
> SET TERM ^ ;
>
> CREATE PROCEDURE PP_FIND_FIELDS_NOTNULL
> RETURNS (
>    TABELA VARCHAR(31),
>    CAMPO VARCHAR(31),
>    QUANTOS INTEGER)
> AS
> begin
>    FOR
>        SELECT
>            RDB$RELATIONS.RDB$RELATION_NAME
>        FROM RDB$RELATIONS
>        WHERE RDB$RELATIONS.RDB$SYSTEM_FLAG = 0
>        ORDER BY RDB$RELATIONS.RDB$RELATION_ID
>        INTO :TABELA
>    DO BEGIN
>        FOR
>            SELECT
>                RDB$RELATION_FIELDS.RDB$FIELD_NAME
>            FROM RDB$RELATION_FIELDS
>            WHERE RDB$RELATION_FIELDS.RDB$NULL_FLAG = 1
>                  AND (RDB$RELATION_FIELDS.RDB$RELATION_NAME = :TABELA)
>            ORDER BY RDB$RELATION_FIELDS.RDB$FIELD_POSITION
>            INTO :CAMPO
>        DO BEGIN
>            EXECUTE STATEMENT 'SELECT COUNT(*) FROM '||:TABELA||' WHERE
> '||:CAMPO||' IS NULL'
>            INTO :QUANTOS;
>            if (QUANTOS > 0) then
>                SUSPEND;
>        END
>    END
> END^
>
> SET TERM ; ^
>
> GRANT EXECUTE ON PROCEDURE PP_FIND_FIELDS_NOTNULL TO SYSDBA;
> *****************************************
> -- 
> ____________________________
> OseasTormen
> Chapecó - SC
> "Magno Machado" <magnomp.gprs em gmail.com>
> escreveu na mensagem news:frb876$59d$3 em ger.gmane.org...
> Estou tentando executar backup e restore em um banco de dados que tenho
> aqui. O backup é feito com sucesso, mas ao executar o restore recebo um
> erro
> sobre validação de um campo not null. Tá, é uma inconsistencia no meu
> banco,
> algum campo que é not null mas que por algum motivo foi gravado um
> registro
> com null naquele campo, pelomenos é o que imagino.
> Então olhei em todas as tabelas que têm o campo informado na mensagem de
> erro (Seria muito bom se a mensagem informasse o nome da tabela, mas já
> estou me acostumando com essas mensagens de erro pouco explicativas do
> firebird...) e nenhuma tabela possui aquele campo definido como not null e
> ainda um registro que foi gravado com null.
>
> Alguém tem uma idéia de o que eu poderia fazer para resolver isso e
> conseguir executar o backup/restore com sucesso?
>
>
>
> ______________________________________________
> 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


______________________________________________
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



______________________________________________
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