मुझे यकीन है कि मैं कुछ बहुत स्पष्ट याद कर रहा हूँ, लेकिन मैं मुझे के जीवन के लिए मेरे pysqlite स्क्रिप्ट एक डेटाबेस के साथ बाहर दुर्घटनाग्रस्त त्रुटि लॉक किया गया है नहीं रोक सकता है। मेरे पास दो स्क्रिप्ट हैं, एक डेटाबेस में डेटा लोड करने के लिए, और एक डेटा को पढ़ने के लिए, लेकिन दोनों बार-बार, और तत्काल, किसी भी समय डेटाबेस के साथ अन्य क्या कर रहा है, इस पर निर्भर करता है। मैं 30 सेकंड के लिए सेट दोनों लिपियों पर टाइमआउट मिल गया है:अजगर/SQLite - डेटाबेस बड़े समय समाप्ति के बावजूद बंद कर दिया
cx = sqlite.connect("database.sql", timeout=30.0)
और लगता है कि मैं मैं में समय समाप्ति के कुछ सबूत क्या एक समय टिकट प्रतीत होता देख सकते हैं (उदाहरण के लिए 0.12343827e-06 0.1 - और मैं मुद्रित होने से कैसे रोकूं?) कभी-कभी मेरे शापित के बीच में आउटपुट स्क्रीन स्वरूपित होता है, लेकिन 30 सेकंड के टाइमआउट के पास कभी भी कोई देरी नहीं होती है, लेकिन फिर भी यह एक दूसरे से बार-बार दुर्घटनाग्रस्त हो जाती है। मैं 64-बिट 4 सीपीयू एचएस 21 आईबीएम ब्लेड पर RHEL 5.4 चला रहा हूं, और बहु-थ्रेडिंग के बारे में कुछ मुद्दों के बारे में कुछ उल्लेख सुना है और यह सुनिश्चित नहीं है कि यह प्रासंगिक हो सकता है या नहीं। उपयोग में पैकेज स्क्लाइट-3.3.6-5 और पायथन-स्क्लाइट-1.1.7-1.2.1 हैं, और Red Hat के आधिकारिक प्रावधानों के बाहर नए संस्करणों में अपग्रेड करना मेरे लिए एक अच्छा विकल्प नहीं है। सामान्य रूप से पर्यावरण के कारण संभव, लेकिन वांछनीय नहीं।
मेरे पास दोनों स्क्रिप्ट्स में पहले autocommit=1
था, लेकिन तब से दोनों पर अक्षम किया गया है, और अब मैं cx.commit()
डालने वाली स्क्रिप्ट पर आईएनजी और चयन स्क्रिप्ट पर काम नहीं कर रहा हूं। आखिरकार जब तक कि मेरे पास कभी भी एक स्क्रिप्ट नहीं होती है, वास्तव में कोई संशोधन कर रही है, तो मुझे वास्तव में यह नहीं पता कि यह लॉकिंग क्यों होनी चाहिए। मैंने देखा है कि समय के साथ यह काफी खराब है जब डेटाबेस बड़ा हो गया है। यह हाल ही में 3 एमबी आकार के 3 एमबी के साथ था, जो लगभग 1 दिन का डेटा था। एक नई फाइल बनाने में काफी सुधार हुआ है, जो समझ में आता है, लेकिन अंततः टाइमआउट का पालन नहीं किया जा रहा है।
किसी भी पॉइंटर्स की बहुत सराहना की गई।
संपादित करें: पूछ मैं अपने कोड थोड़ा पुनर्गठन और एक संकेत का उपयोग समय-समय पर एक लेन-देन हर 5 सेकंड में 0 और 150 के बीच के अपडेट लिखने के लिए करने में सक्षम है के बाद से। इसने लॉकिंग की घटनाओं को काफी हद तक कम कर दिया है, हर एक मिनट में एक बार के विपरीत एक घंटे से भी कम समय तक। मुझे लगता है कि जब मैं दूसरी लिपि में डेटा पढ़ता हूं, तो डेटा को लिखने के समय कुछ सेकंड तक ऑफसेट हो जाता है, लेकिन मूल रूप से मैं किसी समस्या के आसपास काम कर रहा हूं क्योंकि मैं इसे समझता हूं, एक टाइमआउट की आवश्यकता नहीं है, जो करता है अभी भी ठीक नहीं लग रहा है। टा।
क्या आप संपूर्ण डेटाबेस को बंद करना चाहते हैं? मैं लॉक होने के साथ ठीक हूं, लेकिन लॉक जारी होने के लिए न तो स्क्रिप्ट काफी देर तक प्रतीक्षा कर रही है। –
हां, मेरा मतलब है कि लिखने वाले कनेक्शन से डेटाबेस से घनिष्ठ संबंध है। – Almad
ठीक है, मैं हर कुछ सेकंड में डेटाबेस में लिख रहा हूं, निश्चित रूप से बंद करना वास्तव में कुछ भी नहीं बदलेगा? खोलने और बंद करने में अतिरिक्त काम है, तो क्या इससे संभवतः इससे बुरा नहीं होगा? और अगर मैं बंद होने से पहले परिवर्तन कर रहा हूं, तो इसे बंद करने में कोई फायदा नहीं है, क्योंकि यह अब लॉक नहीं होगा। –