Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
violation of primary or unique key hatası
#1
Dostlar selamlar... Geçenlerde bir veri tabanım şişmiş, ağırlaşmıştı. Bir de bir sorgu çok yavaş çalışıyordu. Siz dostların yardımıyla sorguyu yenileyip iki tabloya yeni index ekledim.  onarmalardan (ibexpert /tols/extact metadata menüsünden kopya oluşturma) sonra boyut düştü ve gözle görülür hızlanma oldu. Yaptığım testlerde hata olmayınca kullanıcının kullanımına açtım. bir süre sonra hata vermeye başladı dedi. hatalar şöyle. Aslında verdiği tabloya eklenmiş yeni bir index yok. Olduğu gibi aynı. Bir değişim yapmadığım yerlerde de hata veriyor. Verilen hataların genelinde 
"violation of primary or unique key..." yazıyor. İlgili tablolara baktığımda PK dışında bir index yok. Bu hatalar genellikle yeni kayıt girişlerinde yaşanıyor. Bir de her zaman vermiyor. Bu hataların sebebi nedir nasıl çözebilirim. Ekteki resimlerde bir kayıt işlemi sonrası alınan hata resmi var. Teşekkürler

     
   
Cevapla
#2
ibexpert' den backup restore yapmayı denermisiniz.
Cevapla
#3
REHBER ve FIRMA_URUNLER tablosuna aynı kod ile 2. kaydı yazmaya çalışıyorsunuz diyor. Kısaca bu tabloların Generatorlerini kontrol edin. Son kayıt id (kodu) si 100 ise Generatorunuz bunun altında bir sayıda kalmış.
WWW
Cevapla
#4
(13-05-2020, Saat: 08:49)esistem Adlı Kullanıcıdan Alıntı: REHBER ve FIRMA_URUNLER tablosuna aynı kod ile 2. kaydı yazmaya çalışıyorsunuz diyor. Kısaca bu tabloların Generatorlerini kontrol edin. Son kayıt id (kodu) si 100 ise Generatorunuz bunun altında bir sayıda kalmış.

Değerli hocam aynen generatörler bozulmuş. O dan başlamış. Niçin böyle olur? Sebepleri nedir? İlgili tabloya bakıp tek tek generatörleri manuel gireceğim.

(13-05-2020, Saat: 06:47)Ahmet İPEKÇİ Adlı Kullanıcıdan Alıntı: ibexpert' den backup restore yapmayı denermisiniz.

Daha önce denemiştim sonuç alamadım.
Cevapla
#5
Merhaba,
Önce Meta Data yı yedek alıp daha sonra verileri alıp aktarma yaptıysanız Meta Data da Generator değerlerini almamıştır o yüzden bu şekilde olabilir.

Ek olarak aktarımdan sonra bu tip problemleri gidermek için aşağıdaki gibi bir stored procedure oluşturup aktarımdan sonra çalıştırabilirsiniz.
create procedure AA_VT_ID 
as
declare variable ID integer;
begin
SELECT COALESCE(MAX(KOD),0) FROM BANKA INTO :ID;
execute statement 'ALTER SEQUENCE GEN_BANKA_ID RESTART WITH '||:ID;
SELECT COALESCE(MAX(KOD),0) FROM BANKA_ISLEM INTO :ID;
execute statement 'ALTER SEQUENCE GEN_BANKA_ISLEM_ID RESTART WITH '||:ID;
SELECT COALESCE(MAX(KOD),0) FROM BANKA_TUR INTO :ID;
execute statement 'ALTER SEQUENCE GEN_BANKA_TUR_ID RESTART WITH '||:ID;
end
WWW
Cevapla
#6
Teşekkür ederim moderatörüm.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FB matematiksel işlem de parametre hatası mcuyan 2 424 13-10-2023, Saat: 22:05
Son Yorum: mcuyan
  deadlock hatası baloglurecep 9 2.800 23-12-2021, Saat: 03:40
Son Yorum: vedat35
Photo Firebird hatası HakanY 4 1.421 16-10-2021, Saat: 20:31
Son Yorum: HakanY
  Firebird - Unavailable Database Hatası sunbeki 12 4.090 23-06-2021, Saat: 16:16
Son Yorum: esistem
  Operating System Directive OpenFileMapping Failed Hatası sunbeki 2 1.402 29-04-2021, Saat: 23:48
Son Yorum: sunbeki



Konuyu Okuyanlar: 1 Ziyaretçi