MySQL StartTransaction - Rollback Çalışmıyor..

Diğer veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
static_reactor
Üye
Mesajlar: 16
Kayıt: 08 Oca 2009 12:53

MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen static_reactor »

Kod: Tümünü seç

  TRY
    FLogin.MyConnection1.StartTransaction;
     .
     .
     .
     .
     .
    FLogin.MyConnection1.Commit;
    ShowMessage('İşlem Tamamdır.');
  EXCEPT
    FLogin.MyConnection1.Rollback;
    ShowMessage('İşlem başarısız.');
  END;
S.a arkadaşlar... mydac paletini kullanıyorum ve yukarıdaki . . . . yazan yerdeki kod bloğumda 10-15 defa sql cümleleri çalışıyor.(insert,update,delete,select) ama mesela bi hata oluştuğunda da onu EXCEPT ile yakalayıp RollBack olmasını sağlıyorum. F8 ile ilerleyip hatayı yakalıyorum ve FLogin.MyConnection1.Rollback; satırının çalıştığını görüyorum ve programı sağlıklı bir şekilde sonlandırıyorum. hemen tabloma bakıyorum ve hata werdiği yere kadar olan çalışmış sqllerin hiç biri rollback olmamış :S sizce nedendir. saygılar
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen vkamadan »

Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.

İyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
static_reactor
Üye
Mesajlar: 16
Kayıt: 08 Oca 2009 12:53

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen static_reactor »

vkamadan yazdı:Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.

İyi çalışmalar.

bunları nasıl yapıcam.. ben arayüz olarak navicat kullanıyorumda. mysql i parmaklamadım pek...
InnoDB ye nasıl çeviririm acaba.. yorumunuz için çok teşekkur ederim hocam
static_reactor
Üye
Mesajlar: 16
Kayıt: 08 Oca 2009 12:53

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen static_reactor »

static_reactor yazdı:
vkamadan yazdı:Merhabalar ,
MySQL de InnoDB ve Falcon motorları haricindeki diğer motorlar Transactional değildir, muhtemelen sizin tablolarınız MyISAM bu sebepten Transaction desteklemiyor, tablolarınızın tiplerini basitçe InnoDB ye çevirebilir ve Transactional yapıyı kullanabilirsiniz.

İyi çalışmalar.

bunları nasıl yapıcam.. ben arayüz olarak navicat kullanıyorumda. mysql i parmaklamadım pek...
InnoDB ye nasıl çeviririm acaba.. yorumunuz için çok teşekkur ederim hocam
ustam tamamdır. InnoDB ye çevirdim ama şimdide Transaction - Commit içindki hiç bi sql çalışmıyor.. yani roolback oluyormuş gibi davranıyor.. harbuki F8 le commit satırı çalışıo ama genede yemiyor :S

fikri olan arkadaşlar warmı acaba ???
static_reactor
Üye
Mesajlar: 16
Kayıt: 08 Oca 2009 12:53

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen static_reactor »

InnoDB ye çevirdim ama şimdide Transaction - Commit içindki hiç bi sql çalışmıyor.. yani roolback oluyormuş gibi davranıyor.. harbuki F8 le commit satırı çalışıo ama genede yemiyor :S

fikri olan arkadaşlar warmı acaba ???

arkadaşlar yardım edebilecek warmı?

vkamadan Hocam yorumunuzu dört gözle bekliyorum..
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen mkysoft »

yönetim programlarından biriyle önce test ederek çalıştığından emin olun. delphideki kullandığınız companentlerin ayarını kontrol edin, auto transaction olabilir, yada iptal edilmiş olabilir.
yaren
Üye
Mesajlar: 3
Kayıt: 03 Tem 2007 03:54

Re: MySQL StartTransaction - Rollback Çalışmıyor..

Mesaj gönderen yaren »

yaptığın işlemlerin doğruluk ve yanlışlığını store procedure içinde yapmalısın
büyük ihtimalle varsayılan (default) değer bütün transaction işlemlerinin otomatik
olarak yapılandırılmasından kaynaklanıyor
SET AUTOCOMMIT=0; otomatiği kaldırır
SET AUTOCOMMIT=1; otomatik haline döndürür
örnek

SET AUTOCOMMIT=0;
BEGIN
select.....;
update ...;
delete....;
END;
COMMIT;
SET AUTOCOMMIT=1;

bu basit örnek istisnaları nasıl yakalayacağın ise detaylı konu

kolay gelsin
Cevapla