ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Key Violation

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
maivo
Novato
Novato


Registrado: Segunda-Feira, 3 de Abril de 2006
Mensagens: 66
Localização: Rio Grande do Sul

MensagemEnviada: Dom Fev 06, 2011 7:25 pm    Assunto: Key Violation Responder com Citação

Boa tarde, pesquisei mas não encontrei a solução..até encontrei na net pessoas com o exato problema, mas sem solução por isso criei um novo tópico.
Estou desenvolvendo um sistema de FP onde são inseridos códigos em uma tabela, sendo que ao inserir o segundo registro me retorna a mensagem de violação de chave.
O mais estranho é que começou a aparecer de uma hora para outra isso...se eu incluir UM registro, sair do sistema e entrar, consigo incluir normalmente, (incluo UM ,saio , volto , incluo OUTRO e assim por diante) o problema é quando vou incluir mais de um na sequência.
Logo após o CDSTabela.Post eu dou CDSTabela.Applyupdates(0);
Se alguém poder me ajudar, agradeceria tenho que entregar esse sistema e estou parado neste ponto.
Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Fev 07, 2011 8:26 am    Assunto: Responder com Citação

pq vc ta repetindo o código da chave primaria, como vc trabalha?

vc digita o código ou tem um Generator? como vc faz?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
maivo
Novato
Novato


Registrado: Segunda-Feira, 3 de Abril de 2006
Mensagens: 66
Localização: Rio Grande do Sul

MensagemEnviada: Seg Fev 07, 2011 10:13 am    Assunto: Responder com Citação

É criada através de um generator .. autoincremento.. parece que alguma coisa corrompeu a chave primária, eu inclusive para testes coloquei em um label a chave anterior para ver e realmente está errada.. vou tentar explicar melhor:
Abrindo pelo Ibexpert a tabela eu vejo
ID
29
30
31
32
33
34
35
-> próximo seria o 36

Antes de dar o insert (só para teste) eu mandei exibir em um label o "last" id da tabela, ordenada pelo campo ID .. e me retorna "33" , sendo que como disse, consigo visualisar pe IBexpert que o último ID é o 35.
Existe alguma forma de reindexar? recriar a chave primária? meu medo é que isso ocorra no cliente com o banco cheio de dados..
Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Fev 07, 2011 10:26 am    Assunto: Responder com Citação

vc vai ter q setar o valor correto de novo

Código:

SET GENERATOR seu_generator TO 35
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
maivo
Novato
Novato


Registrado: Segunda-Feira, 3 de Abril de 2006
Mensagens: 66
Localização: Rio Grande do Sul

MensagemEnviada: Seg Fev 07, 2011 10:50 am    Assunto: Responder com Citação

eu dei um drop na tabela e recriei tudo... mas fiquei agora com um pé atrás.. preciso descobrir o que fiz de errado para causar isso.. pois quando o sistema estiver rodando no cliente não pode acontecer...
Existe alguma rotina que faça uma reindexação? recriação da chave primária, algo assim?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rvercesi
Mestre
Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Seg Fev 07, 2011 10:59 am    Assunto: Responder com Citação

O banco de dados não vai se perder nunca!

Você deve ter em algum momento alterado o valor do Generator!

Procure pelo teu sistema se em algum momento vc altera o valor do teu campo de ID.

Só isso que pode ter ocorrido!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rafmattos
Colaborador
Colaborador


Registrado: Quinta-Feira, 11 de Fevereiro de 2010
Mensagens: 3416
Localização: Campo Grande/MS

MensagemEnviada: Seg Fev 07, 2011 11:01 am    Assunto: Responder com Citação

ou na alteração vc pode ter alterado o código de algum registro ness tabela
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário MSN Messenger
maivo
Novato
Novato


Registrado: Segunda-Feira, 3 de Abril de 2006
Mensagens: 66
Localização: Rio Grande do Sul

MensagemEnviada: Seg Fev 07, 2011 11:51 am    Assunto: Responder com Citação

em nenhum momento dentro do sistema faço referência a esse campo..ele tá lá somente para ter uma chave primária...quando crio qualquer tabela já crio esse campo ID, integer, autoincremento, "create trigger", "create generator" e "create procedure" .. e esqueço...sempre fiz assim e nunca tive problemas..
Um detalhe que esqueci de salientar..o BD está de propósito em outro micro na minha rede local, optei por fazer assim porque o cliente vai usar somente em rede, então já estou desenvolvendo e testando em um ambiente parecido com o definitivo..se ocorreu alguma falha na rede poderia ter ocasionado esse problema?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
maivo
Novato
Novato


Registrado: Segunda-Feira, 3 de Abril de 2006
Mensagens: 66
Localização: Rio Grande do Sul

MensagemEnviada: Seg Fev 07, 2011 11:53 am    Assunto: Responder com Citação

existe alguma técnica para minimizar esse tipo de problema? algum macete, cuidado, configuração, etc?
Como disse antes, a cada post eu dou um applyupdates(0)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
rvercesi
Mestre
Mestre


Registrado: Segunda-Feira, 29 de Novembro de 2010
Mensagens: 912
Localização: Curitiba / PR

MensagemEnviada: Seg Fev 07, 2011 12:26 pm    Assunto: Responder com Citação

Não, mesmo que a rede caia o próprio banco faz um rollback e cancela todas as atualizações que estavam pendentes.

Nunca vi um banco se perder no generator ou no COMMIT/ROLLBACK.

Talvez você tenha desligado o generator e inserido alguns registros sem ele e depois voltou a ligá-lo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB