MySQL / PHP işlem davranış

2 Cevap php

Verilen:

mysql_query("START TRANSACTION");
mysql_query("UPDATE foo = 'bar'");
die();

die() işlemi durur elimden önce COMMIT veya ROLLBACK. Benim tablolar baktığımızda, bu güncelleştirme yer almaz görünür, ama başka bir komut dosyası daha sonra sorgu çalıştırırsanız, onlar hala o ilk işlemin bir parçasıdır? Işlem 'açık' hala kadar COMMIT veya ROLLBACK?

2 Cevap

Kalıp mysql bağlantısını öldürürse o zaman evet, işlem kapatılır. Eğer belaya gidiyoruz ama sadece asılı işlem gidiyorsan.

Eminim işlem ve taahhüt aynı mysql_query eğer tüm insanca mümkün aslında olur sağlamak olduğunu yapmak tavsiye ederim.

Bu serileştirme düzeyine bağlıdır. Bir hareket tamamlandıktan veya geri ne ise, bir süre sonra zaman aşımına uğrar ve geri DB devirdi gerekir. Ama o zamana kadar olmayan diğer serializable işlemler tutarsız seçer neden olabilir bitmemiş bir işlemdir. O yıllardan bağımlı level:

  • okuma kaydedilmemiş: Eğer rollback kadar kaydedilmemiş, bitmemiş değerlerini okuyabilirsiniz
  • tekrarlanabilir okuma (mysql varsayılan): Eğer kaydedilmemiş değerleri okumak değil, ancak aralıkları kilitli değil gibi, bir SELECT COUNT (*) 18