2012-10-31 14 views
5

हमारे पास कुछ बदलावों के साथ हमारे सॉफ़्टवेयर का एक नया बीटा संस्करण है, लेकिन हमारे डेटाबेस परत के आसपास नहीं है।बस एआईआर एसक्यूएलएट त्रुटि 3182 डिस्क I/O त्रुटि हुई

हमने अभी हमारे सर्वर लॉग में त्रुटि 3128 की रिपोर्ट करना शुरू कर दिया है। ऐसा लगता है कि एक बार ऐसा होने पर, यह तब तक होता है जब तक ऐप खुला रहता है। कोड का वह हिस्सा जहां यह सबसे स्पष्ट है, जहां हम SQLite के माध्यम से हर सेकेंड डेटा लॉग करते हैं। हमने इस महीने अकेले हमारे सर्वर पर 47k त्रुटियां उत्पन्न की हैं।

3128  Disk I/O error occurred. Indicates that an operation could not be completed because of a disk I/O error. This can happen if the runtime is attempting to delete a temporary file and another program (such as a virus protection application) is holding a lock on the file. This can also happen if the runtime is attempting to write data to a file and the data can't be written. 

मुझे नहीं पता कि यह त्रुटि क्या हो सकती है। शायद एक एंटी-वायरस प्रोग्राम? हो सकता है कि हमारा ऐप उलझन में हो और एक-दूसरे के ऊपर डेटा लिख ​​रहा हो? हम async कनेक्शन का उपयोग कर रहे हैं।

यह कई मुद्दों का कारण बन रहा है और हम नुकसान में हैं। यह हमारे पुराने संस्करण में हुआ है, लेकिन 47,000 बार के बजाय एक महीने में 100 गुना हो सकता है। किसी भी तरह से मैं इसे "0" बार बनाना चाहता हूं।

उत्तर

0

समाधान डालने केवल एक छोटे से आवरण लपेटकर द्वारा एक समय में एक हुआ, सुनिश्चित करें कि डेटाबेस को हटाने, अद्यतन बनाने के लिए किया गया था। उस पर, हमें त्रुटि 3128 और फिर से प्रयास करना पड़ा। मुझे लगता है कि ऐसा इसलिए है क्योंकि हमारे पास एक ट्रिगर चल रहा है जो डेटा डालने के बाद डेटाबेस को लॉक कर सकता है।

+0

आपका मतलब थोड़ा रैपर लपेटने का क्या मतलब है? – xiriusly

0

संभव समाधान: Exception Message: Some kind of disk I/O error occurred

सारांश: शायद डेटाबेस लेकिन एक समस्या पैदा कर (या हटाना) अस्थायी फ़ाइल एक बार डेटाबेस खोला जाता है के साथ एक समस्या नहीं है। एआईआर डेटाबेस में अनुमति हो सकती है, लेकिन निर्देशिका में फ़ाइलों को बनाने या हटाने के लिए नहीं।

एक जवाब यह है कि मेरे लिए काम किया है PRAGMA कथन का उपयोग करने के लिए की तुलना में DELETE अलावा कुछ करने के लिए journal_mode मान सेट करने के लिए है। आप इसे PRAGMA कथन जारी करके ऐसा करते हैं, वैसे ही आप एक प्रश्न कथन जारी करेंगे।

PRAGMA journal_mode = OFF 

दुर्भाग्य से, एक सौदे के बीच में अनुप्रयोग क्रैश हो जाता है जब बंद journaling मोड सेट कर दिया जाता है, तो डेटाबेस फ़ाइल बहुत संभावना भ्रष्ट जाना होगा। ।

http://www.sqlite.org/pragma.html#pragma_journal_mode

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