[firebase-br] Falha ao restaurar backup
Magno Machado
magnomp.gprs em gmail.com
Qui Mar 13 11:08:53 -03 2008
>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
Aproveitando, alguém poderia me explicar como é possivel que haja um
registro com nulo em um campo definido como not null?
A primeira explicação que vem na minha cabeça é que era um campo que
inicialmente aceitava nulos, e que de fato já existiam registros com null
neste campo, e depois ele foi alterado para não mais aceitar nulos. Mas dos
tres casos que eu disse que encontrei, pelomenos um eu tenho certeza que o
referido campo era not null desde o momento em que foi criado na tabela.
"Magno Machado" <magnomp.gprs em gmail.com>
escreveu na mensagem news:frbc5g$o9e$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.
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
Mais detalhes sobre a lista de discussão lista