deadlock hatası
deadlock hatası
interbase 6.5 versionda aynı anda 2 kişinin aynı dosyaya veya kayda ulaşması anında deadlock diye bir hata üretiyor. eski konuları aradım ama bir sonuç elde edemedim.
MT
zaten öyle ama
akış şöyle,
bir dosyada surekli artan bir no var. her kullanıcı bir forma girdiğinde
bu dosyadaki bir değişkeni bir arttırıyor ve post ediyor. sonra diğer kullanıcı girdiğinde oda değişkeni bir arttırıyor ve post ediyor.
ama yani bir kullanıcı o formu açtığında diğerinin o dosyada işi bitmiş oluyor ama galiba server üstündeki data anında yenilenmediği için bu hatayı veriyor. Yani bir kullanıcı dosyayı editte açıp öyle kalmıyor.
Açıyor edit post ediyor ama diğeri bir kaç saniye sonra bile girse deatlock diyor.
bir dosyada surekli artan bir no var. her kullanıcı bir forma girdiğinde
bu dosyadaki bir değişkeni bir arttırıyor ve post ediyor. sonra diğer kullanıcı girdiğinde oda değişkeni bir arttırıyor ve post ediyor.
ama yani bir kullanıcı o formu açtığında diğerinin o dosyada işi bitmiş oluyor ama galiba server üstündeki data anında yenilenmediği için bu hatayı veriyor. Yani bir kullanıcı dosyayı editte açıp öyle kalmıyor.
Açıyor edit post ediyor ama diğeri bir kaç saniye sonra bile girse deatlock diyor.
MT
ama o örnek bir değişkendi
bunun dışında bir suru değişken var. Yani aynı anda stok kartı açacak 2 kişi birisi mutlaka deatlock hatasına düşüyor.
Yani aynı anda 2 kişi aynı table ı kullanamıyor.
Yani aynı anda 2 kişi aynı table ı kullanamıyor.
MT
Eger TTable vey TQuery kullanıyorsanız UpdateMode özelliğini upWhereKeyOnly olarak değiştirin....
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

Problemin tam oluşumunu yazıyorum
Yaptığım aynen şu.
IBtable2.First;
IBtable2.Edit;
IBtable2Stokno.value := IBtable2Stokno.Value+1;
IBTable2.Post;
Fakat iki kişi (veya daha fazla olabilir) kullanırken
birisi edit edip post ediyor diyelim.
stokno 29 dan 30 çıkıyor.
Sonraki kullanıcı formu açtığında değeri 30 görüyor ve yukarıdaki satır işlediğinde değer 31 oluyor.
Sorun şu ki stok değerini 29 dan 30 çıkaran terminal yeniden formu açtığında IBTable2.first satırında ona stokno yine
30 geliyor bu defa yani arada diğer kullanıcının 31 yaptığı değeri görmüyor ve post ederkende deatlock hatası veriyor.
Aslında sonradan giren kullanıcı devam ediyor sorusuz sorunlar ilk giren kullanıcıda oluşuyor. Ve kullanıcı ilerliyemiyor.
Yani neredeyse 24 saattir bunu çözmeye çalışıyorum.
IBtable2.First;
IBtable2.Edit;
IBtable2Stokno.value := IBtable2Stokno.Value+1;
IBTable2.Post;
Fakat iki kişi (veya daha fazla olabilir) kullanırken
birisi edit edip post ediyor diyelim.
stokno 29 dan 30 çıkıyor.
Sonraki kullanıcı formu açtığında değeri 30 görüyor ve yukarıdaki satır işlediğinde değer 31 oluyor.
Sorun şu ki stok değerini 29 dan 30 çıkaran terminal yeniden formu açtığında IBTable2.first satırında ona stokno yine
30 geliyor bu defa yani arada diğer kullanıcının 31 yaptığı değeri görmüyor ve post ederkende deatlock hatası veriyor.
Aslında sonradan giren kullanıcı devam ediyor sorusuz sorunlar ilk giren kullanıcıda oluşuyor. Ve kullanıcı ilerliyemiyor.
Yani neredeyse 24 saattir bunu çözmeye çalışıyorum.
MT
Re: generator
hocam cevap ne olabilir sencemonet yazdı:Generator nasıl kullanılır nasıl tanımlanır bilmiyorum ki


Forum bir hazine. İlk işin aramak olsun. Ayrıca FireBird seminerinde bu konu geçmişti.
Kolay gelsin.
devamı
+ Bu sadece artan bir alan.
artmayan alanlarda edit post yaptığımda nolcak.
Aynı hatayı yine alcam.
Stok dosyasına birisi açtı değişiklik yaptı kapattı.
Sonraki kullanıcı açıp birşey yapmak istediğinde yine aynı hatayı vercek yani bu hata genel benim için.
Yani table yi ben neden kurtaramıyorum lock durumundan.
artmayan alanlarda edit post yaptığımda nolcak.
Aynı hatayı yine alcam.
Stok dosyasına birisi açtı değişiklik yaptı kapattı.
Sonraki kullanıcı açıp birşey yapmak istediğinde yine aynı hatayı vercek yani bu hata genel benim için.
Yani table yi ben neden kurtaramıyorum lock durumundan.
MT
hocam bu normal bir durum eger boyle olmasaydı kayıtlar birbirine girerdi...
firebird yine rowlevel kilit koyuyor. paradoxta biri kayıt girerken digeri sırasını bekliyor...
aynı kayıt uzerinde iki kisinin edit durumu oldugunda ilk giren kayıtı kilitler, senin dedigin diger alanlar (yani otomatik artan olmayan) aynı kayıt icin degistiriliyor ise yine aynı durum olur
yalnız burada birseyleri gozden kacırıyorsun galiba, kayıtları birbirinden ayıran nedir? otomatik artan bir primary alan degilmi, eee
bunu generator kullanarak artırdıgımızda hic cakısan kayıt olmayacak, o zamanda aynı kayıt uzerinde iki kişi işlem yapamayacak,
sadece birisi aynı kayıtı değiştirirken diğeri aynı kayıtı değiştiremeyecek, aslolan da bu
firebird yine rowlevel kilit koyuyor. paradoxta biri kayıt girerken digeri sırasını bekliyor...
aynı kayıt uzerinde iki kisinin edit durumu oldugunda ilk giren kayıtı kilitler, senin dedigin diger alanlar (yani otomatik artan olmayan) aynı kayıt icin degistiriliyor ise yine aynı durum olur
yalnız burada birseyleri gozden kacırıyorsun galiba, kayıtları birbirinden ayıran nedir? otomatik artan bir primary alan degilmi, eee
bunu generator kullanarak artırdıgımızda hic cakısan kayıt olmayacak, o zamanda aynı kayıt uzerinde iki kişi işlem yapamayacak,
sadece birisi aynı kayıtı değiştirirken diğeri aynı kayıtı değiştiremeyecek, aslolan da bu
ÜŞENME,ERTELEME,VAZGEÇME
Hocam anlaşıldı, arama yapmamakta ısrarlısın. Lütfen bizi de anlayın biraz. Dön dolaş temcit pilavı gibi yazmayalım aynı şeyleri.
Generator : http://www.delphiturkiye.com/ibautoinc.htm
IBDataset : http://www.delphiturkiye.com/ibdataset.htm
Interbase'i Çok Kullanıcılı (MultiUser) Kullanmak : http://www.delphiturkiye.com/ibmultiuser.htm
Kolay gelsin.
Generator : http://www.delphiturkiye.com/ibautoinc.htm
IBDataset : http://www.delphiturkiye.com/ibdataset.htm
Interbase'i Çok Kullanıcılı (MultiUser) Kullanmak : http://www.delphiturkiye.com/ibmultiuser.htm
Kolay gelsin.
Arama yaptım ama gerçekten
bulduklarım beni sonuca ulaştırmadı bir turlu.
Ben programı mutiuser çalıştırıyorum.
Ama sorunum bir dosyayı arka arkaya 2 kullanıcı kullanırsa tekrar birisi birşey değiştirmek istediğinde deatlock diyo. bu kişide genelde ilk giren kişi oluyor. sonraki çalışmaya devam ediyor. Yoksa her ikiside raporlara ulaşıyor. Sadece değişiklik hakkı sonra girende kalıyor. Tablex.active = false yapsam bile sonuç değişmiyor.
Ben programı mutiuser çalıştırıyorum.
Ama sorunum bir dosyayı arka arkaya 2 kullanıcı kullanırsa tekrar birisi birşey değiştirmek istediğinde deatlock diyo. bu kişide genelde ilk giren kişi oluyor. sonraki çalışmaya devam ediyor. Yoksa her ikiside raporlara ulaşıyor. Sadece değişiklik hakkı sonra girende kalıyor. Tablex.active = false yapsam bile sonuç değişmiyor.
MT