[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