Como remover transações que nao foi dado o commit ou rollback?

7 respostas
mateusviccari

Boa tarde, vamos supor que o usuario estava cadastrando a nota fiscal de código 20 e o sistema deu um “execute” no statement porem antes de dar o commit, faltou luz e o pc desligou…
Agora quando eu tento cadastrar uma nota fiscal de codigo 20 da erro dizendo que a chave esta duplicada, porem nao existe esse registro na tabela, e mesmo tentando dar um delete no registro de codigo 20 continua dando esse problema.
Alguma luz?

7 Respostas

drsmachado

Está utilizando qual framework ORM e como está o mapeamento para a PK das entidades?

mateusviccari

Na verdade é um pequeno sistema que usa JDBC puro…
e o banco é firebird

drsmachado

Eu apostaria que o problema é no firebird, mas, enfim…
Como é o controle da chave? Sequence, auto increment, identity, você tem uma coluna que faz isso?

mateusviccari

É uma chave personalizada, varchar, logo nao tem controle sobre incremento.

D

Está mais com cara de ser problema do próprio BDD mesmo… pois se o select para a chave ‘20’ não retorna nada, não tem como ele acusar estar duplicado certo?? Mas não sei como funciona o banco por trás, se existe alguam tabela de temporário…

E

O banco está corrompido; você precisa achar alguma ferramenta do banco de dados que consiga limpar a corrupção do banco.

http://www.firebirdfaq.org/faq324/
http://sourceforge.net/projects/ibdbrepair/

drsmachado

O banco está corrompido; você precisa achar alguma ferramenta do banco de dados que consiga limpar a corrupção do banco.

http://www.firebirdfaq.org/faq324/
http://sourceforge.net/projects/ibdbrepair/


drsmachado:

Eu apostaria que o problema é no firebird, mas, enfim…

Criado 5 de junho de 2012
Ultima resposta 5 de jun. de 2012
Respostas 7
Participantes 4