2013-09-25 7 views
5

सिंक करता है मैंने ios7 SQLite/कोर डेटा स्टैक में नई WAL डिफ़ॉल्ट सेटिंग के बारे में कई धागे पढ़े हैं।WAL के साथ ios7 sqlite डेटाबेस कभी भी मुख्य डेटाबेस फ़ाइल

यह पहली जगह में एक अच्छा विचार जैसा दिखता था ... हालांकि मुझे समय-समय पर अपनी व्यावसायिक आवश्यकताओं के अनुसार एक दूरस्थ वेब सेवा में डेटाबेस प्रतिलिपि करने की आवश्यकता है। फिलहाल मैं केवल SQLITE फ़ाइल बैकअप लेता हूं और मैं उपयोग कर रहा हूं webservice ऑपरेशन में 2 अन्य फाइलें नहीं जोड़ सकता। इसका मतलब है कि मेरा बैकअप स्पष्ट रूप से अद्यतित नहीं है, इस प्रकार सुंदर व्यर्थ है।

अन्य लोग सुझाव देते हैं कि मुझे जर्नल_मोड = DELETE (NSSQLitePragmasOption) का उपयोग करके WAL को अक्षम करना चाहिए जो मेरे लिए एक स्वीकार्य कामकाज है। फिर भी, मैं इसके साथ सहज महसूस नहीं करता हूं। ऐसा लगता है कि मैं एक सुंदर सभ्य प्रदर्शन टक्कर पर लापता हूं।

आदर्श रूप से मैं मुख्य डेटा फ़ाइल में SHM/WAL को सिंक करने के लिए कोर डेटा/SQLite को बताने में सक्षम होना चाहता हूं और फिर बैकअप निष्पादित करना चाहता हूं। क्या पागल निजी या अनियंत्रित एपीआई खोदने के बिना ऐसा करने का कोई तरीका है?

+0

क्या आपको कोई समाधान मिला है? –

+0

मुझे एक ही समस्या है। मैं आईओएस 6 से आईओएस 7 में जा रहा हूं, आईओएस 6 में डेटा स्टोर करने के लिए केवल .sqlite फ़ाइल है। लेकिन ios7 में .shm और .wal फ़ाइल है। मैं फ़ाइलों को एक फ़ाइल में सहेजने के लिए फ़ाइल रैपर का उपयोग करता हूं। यदि आईओएस 7 में मैं * .shm और * .wal को अक्षम नहीं करता हूं, तो आईओएस 6 आईओएस 7 – JimZ

+0

में बैकअप फ़ाइल का उपयोग नहीं कर सकता है, मैं आसान विकल्प (पूर्व डिफ़ॉल्ट मोड) के लिए गया था। मुझे अच्छा समाधान नहीं मिला। –

उत्तर

2

move the WAL data to the database file पर, डेटाबेस फ़ाइल खोलें और SQL कथन PRAGMA wal_checkpoint(RESTART) निष्पादित करें।

+0

क्या आप कृपया एक उदाहरण प्रदान कर सकते हैं? ऐसा लगता है कि इसे डेटाबेस की भी आवश्यकता है? क्या आप इसे एक प्रबंधित कॉन्टेक्स्ट या कुछ से प्राप्त कर सकते हैं? –

+3

कोर डेटा का उपयोग करते समय सीधे SQLite से बात करने का कोई अच्छा विचार नहीं है। आप अपने फायदे के लिए, इसके लिए उद्देश्य सी विधियों का उपयोग करना चाहते हैं। –

2
$ sqlite3 yourFile.sqlite 
SQLite version 3.7.12 2012-04-03 19:43:07 
Enter ".help" for instructions 
Enter SQL statements terminated with a ";" 
sqlite> PRAGMA wal_checkpoint(RESTART); 
0|20|20 
sqlite> .exit 
$ 
संबंधित मुद्दे