2015-11-10 9 views
5

üzerinde işlem' ve tek sürecini yeniden başlatmayı deneyin. Ancak, doğrudan MySQL konsolundan eklemeye çalıştığımda, gayet iyi çalışıyor. veritabanı üzerindePython3 - 'Kilitleme bekleme zaman aşımı aşıldı; Belirli bir tabloya eklemek istediğiniz her seferinde ben sürekli bir</p> <pre><code>(1205, 'Lock wait timeout exceeded; try restarting transaction') </code></pre> <p>hatası alıyorum Python kullanarak veritabanı

SHOW FULL PROCESSLIST 

içine bakıyor, başka etkin sorguları ortaya çıkarır. Bu, hiçbir canlı uygulama eklenmemiş bir dev veritabanı olduğundan, herhangi bir problemi hayal edemiyorum. Ancak, üretim veritabanlarımızı barındıran bir sunucuda sunulmakta olup, mümkünse sıfırlama yapmayı kesinlikle tercih etmemekteyim. Bunu nasıl ayıklayacağınız konusunda herhangi bir öneriniz var mı? Ben sorgu sonunda yukarıdaki iletisiyle başarısız olur GÖSTER TAM PROCESSLIST kullanarak veritabanı karşı ve daha sonra MySQL konsoldan manuel olarak eklemek ediliyor görüntülediğinizde

Not , beklendiği işleri olarak.

INSERT INTO deals (user_ID, store_ID, storeChain_ID, title, dealSaving, 
dealDisclaimer, restriction, dealImage, dealURL, submit_ID, userProvider_ID, 
createDate, createDateTime, expirationDate, expirationDateTime, ZIP, STATE, 
city, businessType, DealType_ID, IP, rating, popular, dealSearchData, tag, 
submitName, provider_dealID) 
VALUES (NULL, 
     2651049, 
     NULL, 
     'Toronto East Community Arts Program', 
     'Three-Week Photography Workshop', 
     NULL, 
     NULL, 
     'https://a1.image.net/imgs/8423535b-bd3b-4e1e-afee-ab2869970a4c/700_q60.jpg', 
     'https://www.exmples.com/deals/1336374', 
     111, 
     1, 
     '2015-11-12', 
     '2015-11-12 10:01:58.282826', 
     '2015-11-17 09:59:59', 
     '2015-11-17 23:59:00', 
     'M4M 1K7', 
     'ON', 
     'Toronto', 
     NULL, 
     '1', 
     '127.0.0.1', 
     0, 
     144565, 
     'Three-Week Photography Workshop', 
     'Photography Class', 
     'Partner', 
     1336374) 

Düzenleme aşağıdaki gibidir öneri kullanıldığı bir örnek:

self.DB['master']['cursor'].execute("SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED") 
self.DB['master']['con'].commit() 
self.DB['master']['cursor'].execute(dealsquery,data) 
self.DB['master']['con'].commit() 
+0

Python sorgunuzu gösterebilir misiniz? – Busturdust

+0

Örnek sorgu ekledim – user2694306

+0

Birden çok iş parçacığı ile çalışıyor musunuz? –

cevap

0

Ben MySql "Repeatable Oku kullanır inanın İşte DÜZENLEME

sorgusuna bir örnektir "ENTIRE işlemi için bir kilit tutacak yalıtım" (söz verilene kadar, inanıyorum).

piton MySQL kararlı okumak

cur = conn.cursor() cur.execute("SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED")

düzenlemek gibi bir şey ayarlamak olduğunu için "Okuma sayısı" gibi ayarı farklı bir izolasyon kullanmayı deneyin: izolasyon seviyeleri için iyi bir tanıtım kaynak http://vladmihalcea.com/a-beginners-guide-to-database-locking-and-the-lost-update-phenomena/

+0

Gerçek ekleme ifademden önce bunu eklemeyi denedim, ancak sorun hala devam ediyor. – user2694306

+0

Ekleme yapmadan önce değişikliği yaptınız mı? Ayrıca, devam etmeden önce ekinizi mi taahhüt ediyorsunuz? – Busturdust

+0

Yea, her eki bir taahhütle takip ediyor ve ben de eklemeden önce beyanı yapmaya çalıştım. Özgün sorumluma bir örnek ekledim – user2694306

4

It çıktığında, farklı bir bileşen bir bağlantı kurdu ve commit() ifadesini kaçırıyordu.

İlgili konular