deadlock hatası

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

Selamlar,

IBTransaction.CommitRetaining idi galiba bunu denediniz mi?

Commit Reteaning ile Aktif transactionları diske (Server'a commit) etmesini sağlar. Bir de bunu deneyin.

Ama Auto Incremental olaylarda Generator kullanın. Generator'Un amacı bu !...

Kolay Gelsin.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
sychorax
Üye
Mesajlar: 206
Kayıt: 20 May 2004 04:29

Mesaj gönderen sychorax »

Transaction'ı commit yerine rollback yaparsan durum düzelir sanırım.Try except bloğu içine alırsın eğer Commit hata verirse rollback'e döndürürsün o kayıtla işi bittiğinde yapacağı işleme devam eder herhalde. Artan sayı olayı için herkez yazmış zaten GENERATOR!
monet
Üye
Mesajlar: 68
Kayıt: 26 Şub 2004 02:12
Konum: İstanbul

Mesaj gönderen monet »

hapsini denedim ama hatayı önleyemedim.
şimdilik araya bde yi koydum sorun yok şu an.
ama çözersem nasılçözdüğümü anlatırım.
MT
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar
Bende aynı sorunla karşı karşıyayım.

Stok girerken iki ayrı makinede program kullanıyorken birinde Deadlock hatası veriyor. bu hatadan sonra diğeri de giremiyor. Programı kapatıp açtığında bir kaç stok o şekilde girilebiliyor sonra tekrar aynı hata ile karşılaşılıyor.

Kod: Tümünü seç

        IBTable1.Insert;
        IBTable1MIKTAR.AsInteger:=1;
        IBTable1KOD.AsString:=edit1.Text;
        IBTable1GRUPKODU.AsString:=dxLookupEdit1.Text;
        IBTable1SATICIKODU.AsString:=dxLookupEdit3.LookupKeyValue;
        .
        .
        .
        IBTable1PAR.AsString:=ComboBox9.Text;
        if not DM.tr.InTransaction then dm.tr.StartTransaction;
        if dm.tr.InTransaction then DM.tr.Commit;



şeklinde kayıtlarımı yapıyorum. Deadlock hatası verdiğinde yeni bir stok kodu ilede devam etmeye çalışsam yine aynı hata devam ediyor. Programı kapatıp açmak gerikiyor. Biraz karışık bir durum oldu.
Database de ref alanı var burası Generator tarafından değeri arttırılıyor.
kod alanı primary key.

Yardımlarınız için şimdiden teşekür ederim.
Kullanıcı avatarı
mustafaozdemir
Üye
Mesajlar: 137
Kayıt: 19 Haz 2004 01:56

Mesaj gönderen mustafaozdemir »

ben de ibdataset bileşenini kullanıyorum. dead lock hatasını mesela kayıt sildiğiniz zaman başka bir kullanıcı o kayıt üzerindeyken işlem yapacağı zaman veriyor. bu da normal bir durum gibi. sonra herhangi dead lock hatası falan vermiyor. ibdataset bileşenini kullanmanı öneririm. orada kayıt eklemeler,silmeler falan daha sağlıklı.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2380
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Mesaj gönderen freeman35 »

Öncelikle IBX i update edin, hata burdan kaynaklanıyor demek değil ama mutlaka update edin.

Kod: Tümünü seç

if not DM.tr.InTransaction then dm.tr.StartTransaction; 
        if dm.tr.InTransaction then DM.tr.Commit;
aksine belirtilmediği sürece itransaction lar otomatik başlar, Ayrıca commitretaing kullanın. Hatalar muhtemlene transaction kurgularından kaynaklanıyor. Hangi query grubuna hangi transactionlar bağlı parametreleri neler, bunları kontrol edin, AfterPos ve AfterDelete ten sonra commitretaing aftercansel dan sonrada rollbackretaing yapmayı unutmayın. Tabi bu genelleme, tasarıma göre değişir. Mesela ben fiş mantığı olan formlarda detail ver masterları bağladığım Transation ı ayrıca button a bağlıyorum kullanıcı ya commit yada rollback edebilir

kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
P206
Kıdemli Üye
Mesajlar: 395
Kayıt: 17 Haz 2003 12:36
Konum: İstanbul

Mesaj gönderen P206 »

Selamlar,

Interbase complarını kullanmaktan vaz geçerek sorunumu halletim. FIB componentleri ile programı değiştirdim. Şu anda bir sorun gözükmüyor.
freeman35 Abimizin dediği Update işini yapmadım ama bir iki linkte bu sorunu düzeletiğini gördüm, eğer update eder ve sorun çıkmazsa tekrar buraya yazarım.

İlginize teşekkür ederim.
Cevapla