2010-04-05 21 views
9

हम अपने कोड में sqlite056.jar का उपयोग कर रहे हैं। बैच में डेटाबेस में डालने के दौरान हम प्रतिबद्ध होने पर लाइन पर अपवाद प्राप्त कर रहे हैं।java.sql.SQLException: डेटाबेस लॉक

कोड की रेखाएँ

<object of Connection>.commit(); 
<object of Connection>.setAutoCommit(true); 

अपवाद

java.sql.SQLException: database locked 

उत्तर

2

ऐसा नहीं है कि एक से अधिक प्रक्रिया डेटाबेस को संशोधित करने के लिए कोशिश कर रहा है लगता है। आप किसी भी समय केवल एक कनेक्शन खोल सकते हैं। समस्या पर अधिक पृष्ठभूमि हमें आपको एक अधिक ठोस उत्तर प्रदान करने में मदद कर सकती है।

+0

हम डेटाबेस का एक ही कनेक्शन वस्तु लगता है मैं डेटा के एक ही वस्तु के साथ डेटा बेस के तालिका 2 में तालिका 1 में और एक ही समय में भी डाला मूल्य मूल्य डाला है के साथ एक ही समय में डाटाबेस की कई तालिकाओं के साथ काम कर सकते हैं आधार कनेक्शन – rajkumari

+0

या डेटाबेस लॉक अपवाद obj Connection.commit() लाइन – rajkumari

7

एक SQLite डेटाबेस पढ़ना लॉकिंग स्थिति को साझा करने के लिए सेट करता है। एक ही समय में एकाधिक पाठक सक्रिय हो सकते हैं।

SQLite डेटाबेस को लिखना लॉकिंग स्थिति को विशिष्ट में सेट करता है। उस समय कोई अन्य प्रक्रिया सक्रिय नहीं हो सकती है।

आप पर http://www.sqlite.org/lockingv3.html

+0

के कारण हुआ है Applebviewer के साथ एक एप्लेट चलाते समय मुझे एक ही त्रुटि थी (जो एक एसक्लाइट डीबी तक पहुंचा)। लेकिन केवल 64 बिट जेवीएम के तहत चलते समय। एक 32 बिट जेवीएम स्विचिंग ठीक (विंडोज़) काम किया। शायद 64 बिट चालक जार में संकलित नहीं किया गया था। – dgorissen

9

कनेक्शन एक विस्तृत विवरण प्राप्त कर सकते हैं प्रत्येक प्रश्न के बाद बंद कर दिया जाना चाहिए। यदि कोई भी कनेक्शन अभी भी जारी है। मुझे जावा डेस्कटॉप ऐप्स पर एक ही त्रुटि मिली है, जिसे हल किया गया है।

0

मेरे मामले में, मैं अपने अद्यतन क्वेरी में WHERE क्लॉज जोड़ना भूल गया, और यह "डेटाबेस लॉक" त्रुटि देता है।

सावधानी से अपने प्रश्नों की जांच करें।

संपादित करें: मैं संकेत मिलता है कि मैं अद्यतन क्वेरी जहां मैं कई गुण बदल रहा हूँ का एक प्रकार का इस्तेमाल किया है भूल गया:

अद्यतन उपयोगकर्ता सेट वजन = 160, desiredWeight = 145 कहां आईडी = 1;

+1

** एक बहुत पुराना सवाल ** - लेकिन इसका उत्तर देने का प्रयास करने के लिए धन्यवाद। इस विशिष्ट मामले में, आपको कोई विचार नहीं था कि प्रश्न में 'एसक्यूएल' कथन कैसा दिख रहा था - और इसलिए यह सुझाव दिया गया कि क्वेरी 'अद्यतन' थी, जहां 'अनुमान' के रूप में गायब हो गया है। इस मामले में और अधिक उपयुक्त होना क्या था (टिप्पणी में) 'एसक्यूएल' क्वेरी कैसा दिखता था - यह संकेत देते हुए कि कारण गायब 'WHERE' खंड के समान कुछ हो सकता है। – ishmaelMakitla

+0

मैंने अपनी पोस्ट में संपादन जोड़ा है। मुझे लगता है कि इससे कोई फर्क नहीं पड़ता कि सवाल कितना लंबा है, लोग इस तरह की समस्या के लिए गुगलते हैं। घणी खम्मां! –

+0

अच्छा बिंदु। एसक्यूएल कथन के बारे में, मेरा मतलब था कि प्रश्न में स्वयं SQL कथन शामिल नहीं था, इसलिए आप इसे नहीं जानते थे (इसे बिना पूछे)। लेकिन पुराने सवालों के जवाब देने के बारे में अच्छा मुद्दा - अच्छा बिंदु। – ishmaelMakitla

संबंधित मुद्दे