PDO :: ATTR_AUTOCOMMIT işlemsel olmayan INSERT / UPDATE sayar

0 Cevap php

Bir süre için bu başımı çizilmeye ....

Ben bazı InnoDB tablolar ile FOR UPDATE kullanmak istediğiniz gibi pdo->setAttribute(PDO::ATTR_AUTOCOMMIT,0); ile bir PDO nesnesi var. MySQL belgeleri okuyarak, FOR UPDATE, yalnızca okuma satırları ise kilidi olacak:

  1. Eğer bir işlem vardır
  2. Eğer bir işlem not ve set autocommit=0 verildikten

Yani, ATTR_AUTOCOMMIT PDO nesnesi satırları kilitlemek için izin kullanıyorum. Her iki durumda da, bu geçerli değil INSERT ve UPDATE deyimleri neden oluyor. Bu ifadeler FOR UPDATE Onlar sadece hazırlanmış tablolar ile aynı PDO nesnesi üzerinden çalışan ile ilgisi vardır.

Benim MySQL sorgu günlük gibi görünüyor:

xxx    Connect   user@host
xxx    Query     set autocommit=0
xxx    Query     INSERT INTO foo_tbl (bar, baz) VALUES ('hello','world')
xxx    Quit

PHP / PDO şikayetçi, ama tablodan seçerek verileri yazılmış olmadığını gösteriyor değil.

Ben kullanıyorum sorguları önceki zaman binlerce çalıştırmak edilmiştir; sadece ATTR_AUTOCOMMIT değişiklik yapılmıştır. Bu seçeneği Çıkarma şeyi tekrar çalışır hale getirir. İşlemler çok autocommit=0 seçeneği ile iyi çalışıyor.

PDO nesne üzerinde yapmak gerekir ek çağrılar değişiklikleri yapmak sopa (commit(), bir işlem olmadığını haklı olarak şikayet) var mı? Temelde, bir düz PDO nesnesi istiyorum ama InnoDB tablolar için işlemlerin dışında (burada çok uzun ve sıkıcı neden arka plan) satırları kilitlemek için seçeneği ile.

Bu aptal şey ben eksik scratches head am eminim

0 Cevap